C:使用open()拒绝权限(Windows的GCC)

Dea*_*ing 3 c gcc

所以,我只写:

int fdes = open(path, O_WRONLY | O_CREAT | O_TRUNC);
Run Code Online (Sandbox Code Playgroud)

如果path引用的文件不存在,则此代码有效.但如果确实如此,则代码返回errno13:Permission Denied.我从来没有使用过O_EXCL模式.

我很长一段时间都在寻找解决这个问题的方法,我真的很困惑.你能解释一下这个问题吗?

我使用GCC for windows(4.5.2).您的回答将不胜感激.

Jon*_*ler 5

  1. 如果你使用O_CREAT,你应该提供一个模式作为第三个参数open().
  2. 如果文件存在,则必须具有该文件的写入权限.该错误表明(强烈建议)在没有写入权限的情况下创建文件.这可能是因为没有以合理模式创建它.

请注意(至少在Unix上)您可以创建一个用于以模式0444(甚至0)写入的文件; 权限影响其他所有人,但不影响在使用创建文件的文件描述符时创建文件的进程.

  • 如果您无权读取您尝试创建的路径的任何父目录,也会发生“权限被拒绝”。 (2认同)