检查文件是否不存在或权限被拒绝 C

标签 c io

如何检查文件是否不存在或存在但我没有读取权限?

我知道我可以使用像 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/

相关文章:

arrays - Haskell 可变结构与不可变 Shell

python - 如何从文本文件读取值并将其存储到字典中。 [Python]

c - 用于写入 EBCDIC 字符数组的 fputs

java - jdk7 watch service API中,什么时候会抛出OVERFLOW事件?

python - 将两个 float 写入常规 txt 的正确方法

c++ - 为什么当左侧操作数为负值时,左移操作会调用未定义行为?

jar 目录中的 Java listFiles

c - 如何将以微秒为单位的字符串转换为C中的struct tm?

c++ - 从数组复制到变量导致计算器溢出

c - 从字符串加载 C 结构