【发布时间】:2012-09-18 21:27:19
【问题描述】:
我正在运行以下程序,它使用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;
}
【问题讨论】:
-
$HOME 对 shell 脚本有意义,但对 C 程序没有意义。您要求 stat 在当前工作目录下方名为 $HOME 的目录中查找名为 file.sh 的文件。