gpt4 book ai didi

c - 替代 dir 命令来查询 C 中的目录

转载 作者:行者123 更新时间:2023-11-30 19:24:30 24 4
gpt4 key购买 nike

我正在尝试创建一个程序,用户可以在其中添加不同的路径正则表达式,以便对与正则表达式匹配的文件执行一组特定的操作。

我尝试使用 dirent.h 头文件的 opendir() 但很快意识到它不使用正则表达式的概念。

我尝试模拟的 dir 命令是

dir [regex] /b

我需要(字符)缓冲区中的输出**。通过管道输出可能是一个解决方案,但我正在寻找一种更有效的方法来做到这一点。

标准 (C90) 库中是否有任何预定义函数,还是我们必须创建自己的实现?

最佳答案

C 不知道 directories 。他们是operating system具体的,通常由您的OS kernel提供(但是,请查看 GNU Hurd 作为异常(exception),并查看 unikernels )。阅读C11标准n1570并在 2020 年忘记过时的 C89标准和TurboC 。考虑尝试一些Linux distribution (例如 UbuntuDebian 或其他)。他们中的大多数提供GCCClang (或非 optimizing TinyCC 编译器)并且对开发人员非常友好。我的建议:使用 GCC as gcc -Wall -Wextra -g。选择一个足够好的built automation工具(可能是 GNU make ),具有适当的 source-code editor (例如 GNU emacsvimgeany 或其他)。学习how to debug small programs并使用 GDB调试器和 git版本控制工具。

POSIX确实了解目录(这是一个用英语编写的 API 规范,也定义了 regex(3) )。请参阅here ,并阅读Linux man pages 。还有WinAPI .

在 Linux 上,请参阅 mkdir(2) , chdir(2) , readdir(3) , getcwd(3) , unlink(2) , stat(2) , open(2) , nftw(3) , path_resolution(7)等等等等;您可能想研究 Linux kernel 的源代码以及一些常见的 C 库,例如 GNU glibcmusl-libc 。为你几个月的全职工作做好预算。他们是open source ,因此在某些条件下您可以研究、改进和重用它们的source code 。另请参阅http://linuxfromscratch.org/

另请注意popen 。您可能不想使用它,而更喜欢使用更原始的 system calls (有关 Linux 上的列表,请参阅 syscalls(2))。您可以使用像 Glib 这样的库(来自GTK)。

请记住,C 程序(freestanding 类型)可以在裸机上运行(例如 Arduino )。在这些情况下,谈论目录没有任何意义。另请参阅osdev.org了解更多,并观察 Linux kernel用 C 语言编写(带有少量汇编代码)。

GrassHopper是一个主要用 C 编写的操作系统,没有任何文件或目录。另请参阅存档于 tunes.org 的旧讨论和 tccboot .

关于c - 替代 dir 命令来查询 C 中的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60251885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com