0
サブディレクトリであるエントリを無視する必要があります。どうすればいい?私はS_ISDIR(s.st_mode)
を使用しなければならないと思うが、どうすればいいのかわからない。私を助けてくれますか?ここでlinuxのディレクトリエントリを列挙するときにサブディレクトリを無視する方法C
が私のコードです:
void recorrer_directorio(char *dir_name) {
DIR *dir = NULL;
struct dirent *ent;
char fich[1024];
char buff[4096];
int fd;
/* OPEN DIRECTORY */
/*ESTO ES MI CODIGO*/
dir = opendir(dir_name);
/* TREATMENT OF ERROR */
if (dir == NULL) {
printf("aqui esta mi error");
perror("Recorrer_Directorio : opendir()");
exit(1);
}
while ((ent = readdir(dir)) != NULL) {
/* Nos saltamos las que comienzan por un punto "." */
if (ent->d_name[0] == '.')
continue;
/* PATH OF FILE*/
realpath(ent->d_name, fich);
printf("MI RUTA COMPLETA DE FCHERO [%s]\n", fich);
/* IGNORE DIRECTORY PATH */
..........
}
}
通常のファイルは '.'で始まることがありますが、無視するとOKではない可能性があります。あなたは "を確認することができます。"と ".."を明示的に指定する必要がありますが、他のエントリーには一般的な解決策が必要です。 – chqrlie
また、 'realpath'をこのように使用しないでください:現在のディレクトリに対してのみ動作します。 P.P.に示唆されている連結を使用してください。必要ならば、結果のバッファに 'realpath'を使います。 – chqrlie
最後に、貴重なハンドルが漏れないように 'closedir()'を忘れないでください。 – chqrlie