【发布时间】:2013-07-11 04:56:55
【问题描述】:
我正在查看K&R 2 中的一个示例(8.6 示例 - 列出目录)。它是 Linux 命令 ls 或 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对目录进行系统调用吗?还是其他原因造成的?
【问题讨论】:
标签: c operating-system directory system-calls kernighan-and-ritchie