任何人都可以向我解释为什么我无法打开/Library/Logs/DiagnosticReports
下的用于写入的文件(macOS)(无论出于何种原因)。
我知道此目录归root拥有,但是当我使用带有命令touch foo
的终端时,文件的创建确实没有任何问题(并且我以相同的非root用户身份运行)用户)。
当我尝试在C程序中使用open
系统调用时,出现错误2(访问被拒绝)。
那是导致错误的代码。
fd = open(path, O_RDWR);
想知道我运行该程序和使用终端写入文件(还是同一用户)之间是否有区别
答案 0 :(得分:2)
系统不允许您像打开常规文件一样打开目录。
open
(以及许多其他系统或库例程)失败后,您可以使用perror
(在<stdio.h>
中声明)来打印有关错误的消息(基于信息集)在errno
中)。在这种情况下,perror("open")
打印“ open:是目录”(或类似内容)。