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