我正在查看K&R 2中的一个示例(8.6 示例 - 列出目录)。ls
它是 Linux 命令或 Windows的精简版dir
。该示例显示了诸如opendir
、之类的函数的实现readdir
。我已经尝试逐字输入代码,但它仍然不起作用。它所做的只是打印一个点(对于当前目录)并退出。
我在代码中(在 的实现中readdir
)发现的一件有趣的事情是它正在调用系统调用,比如目录上的open
和read
。就像是 -
int fd, n;
char buf[1000], *bufp;
bufp = buf;
fd = open("dirname", O_RDONLY, 0);
n = read(fd, bufp, 1000);
write(fd, bufp, n);
当我运行此代码时,即使文件夹名称"dirname"
中有一些文件,我也没有得到任何输出。
此外,这本书说,该实现适用于版本 7 和 System V UNIX 系统。这就是它不能在 Linux 上运行的原因吗?
这是代码 - http://ideone.com/tw8ouX。
那么Linux不允许read
对目录进行系统调用吗?还是其他原因造成的?