我在看K&R 2(8.6示例 - 列表目錄)中的一個示例。這是一個精簡版的Linux命令ls
或Windows'dir
。該示例顯示了功能的實現,如opendir
,readdir
。我已經嘗試過逐字輸入代碼,但它仍然不起作用。它所做的只是打印一個點(用於當前目錄)並退出。在目錄上使用`read`系統調用
我在代碼中發現了一件有趣的事情(在執行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
系統調用目錄?還是別的什麼造成了這個?
所以'readdir'是Linux中的系統調用? – ShuklaSannidhya
老實說我不知道'readdir()'本身是系統調用還是調用別的東西。寫一個測試程序,用'strace'運行,找出並告訴我。我也很好奇。 –