функция 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

Похожие вопросы
Добавить ответ
Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Нажимая кнопку «Отправить», я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности этого сайта.