我们可以使用stat
和文件的相对路径来检查文件是否存在?当我使用它时,我总是得到负面结果。
答案 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