通常のファイルをディレクトリに表示したい。ただし、すべてのファイルに対してstat
が失敗します。リソースを一時的に利用できなく 通常のファイルのみリスト表示、statの問題
をstatできません::リソース一時的に利用できなく
をstatできません:リソースを一時的
DIR* dp = NULL;
struct dirent* entry = NULL;
dp = opendir(directory);
if (!dp) { log_err("Could not open directory"); return -1; }
while (entry = readdir(dp))
{
struct stat s;
char path[1024]; path[0] = 0;
strcat(path, directory);
strcat(path, entry->d_name);
int status = 0;
if (status = stat(path, &s))
{
if (S_ISREG(s.st_mode))
{
printf("%s\n", entry->d_name);
}
}
else
{
fprintf(stderr, "Can't stat: %s\n", strerror(errno));
}
}
closedir(dp);
出力は
をstatできないです利用不可
(...何回も)
errno
はE_AGAIN
(11)に設定されています。
ここで、結果のpath
を印刷すると、実際には有効なファイル名とディレクトリ名になります。ディレクトリは読み込み可能で、実行するユーザーにはその権限があります(プログラムを書き込むディレクトリです)。
この問題の原因は何ですか。これをどうすれば正しく行うことができますか?
は、ファイルにつながるパス内のディレクトリのすべてに許可されていることが実行権限を確認しましたか? – patapizza