У меня есть эта функция
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», которые оба находятся в том же каталоге, что и мой исполняемый файл. Любое руководство будет оценено.
if (result == -1);
return -1;
Удалите точку с запятой из первой строки.
Из вашего поста видно, что может быть какая-то проблема с безопасностью пользователя или из-за того, что каталог может не иметь соответствующей авторизации для поиска. В любом случае вы можете выполнить быстрое тестирование с помощью команды stat и проверить, работает ли она или нет.
$ stat filename.txt
Да, во время возврата stat () -1, было бы полезно понять, почему происходит сбой этого системного вызова.