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

0

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

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 к моей функции, называемой processDirectory. По какой-то причине независимо от того, что я делаю, вызов stat() продолжает возвращать -1. Я пробовал жестко кодировать имя файла, например "test.txt", и каталог под названием "/test", которые оба находятся в том же каталоге, что и мой исполняемый файл. Любые указания будут оценены.

  • 4
    Значение errno равно?
  • 0
    ERRNO? @ IgnacioVazquez-Abrams
Показать ещё 12 комментариев
Теги:
stat

2 ответа

3
Лучший ответ
if (result == -1);
    return -1;

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

  • 2
    Кстати, компиляция с gcc -Wall бы предупредил вас ....
  • 0
    Да, то же самое касается Apple: zdnet.com/…
1

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

$ stat filename.txt

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

  • 0
    Помимо того, что это не дает правильного решения (см. Мой ответ), это не ответ вообще, это комментарий. Пожалуйста, оставляйте комментарии как комментарии (у вас сейчас достаточно представителей), а не как ответы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню