我们可以使用stat
文件的相对路径来检查文件是否存在吗?当我使用它时,我总是得到负面的结果。
问问题
3322 次
3 回答
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
于 2013-08-27T08:51:33.520 回答
0
使用相对路径名调用 stat 没有问题。不太确定“负面结果”是什么意思,值得检查返回的实际错误并检查您是否具有(例如)检查相关文件的权限
于 2013-08-27T08:55:26.190 回答
0
stat
路径的所有组件都必须存在并且在被调用时可以按原样遍历。这意味着,例如,这将起作用:
stat("direxists/../file_exists", &stat_struct);
虽然这不会:
stat("dirnotexist/../file_exists", &stat_struct);
即使dirnotexist/../file_exists
可以归一化为 yield ./file_exists
。第二次调用将产生一个 ENOENT 错误。有关详细信息,请参见此处:https ://linux.die.net/man/2/stat
于 2020-08-12T21:21:15.470 回答