функция stat () не возвращается правильно

У меня есть эта функция

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», которые оба находятся в том же каталоге, что и мой исполняемый файл. Любое руководство будет оценено.

0

Решение

if (result == -1);
return -1;

Удалите точку с запятой из первой строки.

3

Другие решения

Из вашего поста видно, что может быть какая-то проблема с безопасностью пользователя или из-за того, что каталог может не иметь соответствующей авторизации для поиска. В любом случае вы можете выполнить быстрое тестирование с помощью команды stat и проверить, работает ли она или нет.

$ stat filename.txt

Да, во время возврата stat () -1, было бы полезно понять, почему происходит сбой этого системного вызова.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector