我正在运行以下程序,该程序使用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;
}
答案 0 :(得分:4)
strcpy()
不会将环境变量$HOME
扩展为其值,但会复制指定的提取字符串文字。您可以使用getenv()
获取$HOME
的值。
将您的失败消息更改为:
printf("File not found: %s\n", path);
确认。