我们可以使用stat与c ++文件的相对路径

时间:2013-08-27 08:43:23

标签: c++ relative-path stat

我们可以使用stat和文件的相对路径来检查文件是否存在?当我使用它时,我总是得到负面结果。

3 个答案:

答案 0 :(得分:3)

此代码显示r=0作为输出:

#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>


int main()
{
    struct stat buf;
    int r = stat("../junk", &buf);
    std::cout << "r=" << r << std::endl;
}

ls -l ..的输出(缩减为仅显示相关目录):

$ ls -l ../
drwxr-xr-x  6 username group  12288 Aug 27 09:48 junk

答案 1 :(得分:0)

使用相对路径名称调用stat没有问题。不太确定“否定结果”是什么意思,值得检查返回的实际错误并检查您是否具有(例如)检查相关文件的权限

答案 2 :(得分:0)

在调用stat时,路径的所有组件必须存在并且可以原样遍历。例如,这意味着它将起作用:

stat("direxists/../file_exists", &stat_struct);

这不会:

stat("dirnotexist/../file_exists", &stat_struct);

即使可以将dirnotexist/../file_exists规范化为./file_exists。第二次调用将产生ENOENT错误。有关更多详细信息,请参见此处:https://linux.die.net/man/2/stat