如何检查文件是否不存在或存在但我没有读取权限?
我知道我可以使用像 perror()
或 strerror(errno)
这样的东西来打印消息,但是如果我想要一个我可以像这样处理的检查,如何我要这样做吗:
if (not exist) {
create file;
}
else if (no permission) {
exit;
}
这是我正在处理的代码。我觉得 err
总是= -1 当文件不存在或者我没有权限时,所以我不知道如何处理。
int fdPath, n, err;
unsigned char buffer[4096];
char *path;
// get path
path = argv[1];
// get file descriptor from opening file
fdPath = open(path, O_RDWR);
err = read(fdPath, buffer, 4096); // read file in path
最佳答案
来自 open(2)
手册页:
RETURN VALUE
open(), openat(), and creat() return the new file descriptor,
or -1 if an error occurred (in
which case, errno is set appropriately).
这告诉你,如果你想找出系统调用失败的原因,你需要检查 errno
变量,它可能设置为类似 EACCESS
(拒绝许可)或 ENOENT
(没有这样的文件或目录)等。
This看起来像是一个合理的例子。
关于检查文件是否不存在或权限被拒绝 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31640495/