了解しました。問題が発生しています。これが私のコードです(この前に呼び出されたopendir()):
while( (dp = readdir(dfd)) != NULL ) {
if( strcmp(dp->d_name, ".") == 0 || strcmp(dp->d_name, "..") == 0)
continue;
lstat(dp->d_name, &stbuf);
printf("%s: ", dp->d_name);
if( S_ISDIR(stbuf.st_mode) )
puts("Directory");
else if ( S_ISREG(stbuf.st_mode) )
puts("File");
else if ( S_ISCHR(stbuf.st_mode) )
puts("Character Device");
else if ( S_ISBLK(stbuf.st_mode) )
puts("Block Device");
else if ( S_ISFIFO(stbuf.st_mode) )
puts("Fifo");
else if ( S_ISLNK(stbuf.st_mode) )
puts("Link");
else
puts("Socket");
}
return;
}
私はディレクトリを読んで、ファイルタイプが何であるかを判断しています。唯一の問題は、これが常に「ディレクトリ」を出力することであり、lstatの呼び出しと関係があると思います。適切に変更する方法が正確にはわかりません。