у меня есть эта функция
long processFile(char * fileName)
{
struct stat statBuf;
mode_t mode;
int result;
result = stat(fileName, &statBuf);
if (result == -1);
return -1;
if(S_ISDIR(mode))
return(processDirectory(fileName));
else
return 1;
}
Если «fileName» является реальным файлом, я хочу, чтобы он возвращал его, но если «fileName» — это каталог, я хочу, чтобы он перешел к моей функции с именем processDirectory
. По какой-то причине, что бы я ни делал, вызов stat()
продолжает возвращать -1
. Я попытался жестко закодировать имя файла, например «test.txt», и каталог с именем «/test», которые оба находятся в том же каталоге, что и мой исполняемый файл. Любое руководство будет оценено.
errno
равно? - person Ignacio Vazquez-Abrams   schedule 17.03.2014stat(2)
. - person Ignacio Vazquez-Abrams   schedule 17.03.2014return -1;
на{ perror("stat"); return -1; };
- person Basile Starynkevitch   schedule 17.03.2014{fprintf(stderr, "stat() failed: %s\n", strerror(errno)); return -1;}
@BasileStarynkevitch - person alk   schedule 17.03.2014result = stat(fileName, &statBuf); if (result == -1);return -1;
наif(stat(fileName, &statBuf) == -1){ perror("stat() error "); return -1; }
и теперь все работает. Спасибо всем за помощь. - person AlwaysLearning   schedule 17.03.2014;
после оператора if, а не из-за вызова perror. - person Jim Balter   schedule 17.03.2014;
. - person Jim Balter   schedule 17.03.2014