6

K&R 2 (8.6 例 - ディレクトリの一覧表示)の例を見ていました。これは、Linux コマンドlsまたは Windows のdir. この例は、 、 などの関数の実装を示していopendirますreaddir。コードを単語ごとに入力しようとしましたが、まだ機能しません。実行することは、(現在のディレクトリの) ドットを出力して終了することだけです。

コード ( の実装readdir) で見つけた興味深い点の 1 つは、システム コール likeopenおよびreadon ディレクトリを呼び出していたことです。何かのようなもの -

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です。

readでは、Linux はディレクトリに対するシステム コールを許可していないのでしょうか? それとも他の何かがこれを引き起こしていますか?

4

2 に答える 2