我正在尝试给我的程序一个目录路径并循环遍历此目录中的所有文件以及子目录中的文件以仅查找c文件并编译它们 . 我不想使用readdir \ opendir这样做 . 我能够使用以下命令打开目录:

(fd = open(".", O_DIRECTORY | O_RDONLY))

现在为了访问目录及其子目录中的文件,我想使用read()系统调用 . 但是我怎么能这样做呢?当我想读取文件时,我这样做:

char c;
read(fd1, &c, 1) == 1)

但我想使用char不是正确的方法..那么我应该使用什么呢?

最后一件事:为了访问子目录中的文件(虽然我将使用递归来做)我必须能够定义我是否正在读取子目录的文件,我知道is_dir宏可以做到这一点但在这种情况下我不能使用它,所以检查它是文件还是目录的正确方法是什么?

任何帮助,将不胜感激