stat返回ENOENT

时间:2012-09-18 13:22:23

标签: c linux stat

我正在运行以下程序,该程序使用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 个答案:

答案 0 :(得分:4)

strcpy()不会将环境变量$HOME扩展为其值,但会复制指定的提取字符串文字。您可以使用getenv()获取$HOME的值。

将您的失败消息更改为:

printf("File not found: %s\n", path);

确认。