我们可以在c++中使用带有文件相对路径的stat吗

can we use stat with relative path to a file in c++

本文关键字:相对 文件 路径 stat c++ 我们      更新时间:2023-10-16

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

此代码将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

使用相对路径名调用stat没有问题。不太确定你所说的"负面结果"是什么意思,值得检查返回的实际错误,并检查你是否有(例如)检查有问题文件的权限

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

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

而这不会:

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

即使CCD_ 5可以被归一化以产生CCD_。第二个调用将产生ENOENT错误。请参阅此处了解更多详细信息:https://linux.die.net/man/2/stat