ent が struct dirent* 型である C で readdir() を呼び出すときに、ent.d->name がファイルかディレクトリかをチェックする方法。
Vivek Sharma
質問する
222 次
2 に答える
2
それが、 と一緒に使用する場合のS_ISREG()
とS_ISDIR()
ですstat(2)
。詳細については、man ページを参照してください。
POSIX に完全に準拠していなくても構わない場合は、 と を使用DT_REG()
しDT_DIR()
て、ディレクトリ性と規則性をそれぞれチェックできます。これは、 のマニュアル ページに記載されていますreaddir(3)
。
于 2013-03-22T14:02:50.660 に答える
0
もう 1 つの方法は、d_name で opendir() を呼び出して、null が返されるかどうかを確認することです。
int isDir(struct dirent *ent)
{
if (ent && strcmp(ent->d_name, ".") && strcmp(ent->d_name, "..")) // don't include pwd and parent dir
{
DIR *isDir = opendir(ent->d_name);
if (isDir)
return 1;
}
return 0;
}
于 2013-03-22T15:10:48.700 に答える