私はCを初めて使用しますが、いくつかのシステムコールを試しています。
ディレクトリ内のすべてのファイルを繰り返し処理し、現在のファイル名とサイズを出力するプログラムを作成しています。プログラムにファイル名を出力させることはできますが、statシステム呼び出しを実行するとエラーが発生します。
コードの一部を次に示します。
while (dptr = readdir(dirp)) {
if (stat(dptr->d_name, &buf) != 0) {
//Always does this and it does print the file name
printf("Error on when getting size of %s \n", dptr->d_name);
} else {
//Never gets here
printf("%u", buf.st_size);
}
}
私はこのように記述された構造体を持っています:
struct stat buf;
struct dirent *dptr;
DIR *dirp;
私が変更した場合:
if (stat(dptr->d_name, &buf) != 0)
に
if (stat(dptr->d_name, &buf) != [EACCES])
それでもループに入り、ファイル名を読み取れないと思いますが、エラーステートメントに問題なく出力されます。
誰かが私を正しい方向に向けることができますか?ありがとう!
アルカジー