stat возвращает ENOENT
Я запускаю следующую программу, которая проверяет, существует ли файл или не использует stat()
, Но когда я прохожу путь, скажи: $HOME/file.sh
, это не с ENOENT
ошибка. Но когда я прохожу расширенный путь, т.е. /root/file.sh
, stat()
возвращает успех, т.е. код выхода 0.
int main ()
{
struct stat statbuf;
char path [1024];
strcpy(path,"$HOME/file.sh");
int rc = stat(path,&statbuf);
if (rc == -1 )
{
printf ("File not found !!\n");
}
else
printf("Found it !!\n");
return 0;
}
1 ответ
strcpy()
не будет расширять переменную среды $HOME
к его значению, но скопирует строковый литерал извлечения, как указано. Вы можете получить значение $HOME
с помощью getenv()
,
Измените сообщение об ошибке на:
printf("File not found: %s\n", path);
для подтверждения.