将文件写入“ DiagnosticReports”时访问被拒绝

时间:2020-03-03 12:56:47

标签: c macos

任何人都可以向我解释为什么我无法打开/Library/Logs/DiagnosticReports下的用于写入的文件(macOS)(无论出于何种原因)。

我知道此目录归root拥有,但是当我使用带有命令touch foo的终端时,文件的创建确实没有任何问题(并且我以相同的非root用户身份运行)用户)。

当我尝试在C程序中使用open系统调用时,出现错误2(访问被拒绝)。

那是导致错误的代码。

fd = open(path, O_RDWR);

想知道我运行该程序和使用终端写入文件(还是同一用户)之间是否有区别

1 个答案:

答案 0 :(得分:2)

系统不允许您像打开常规文件一样打开目录。

open(以及许多其他系统或库例程)失败后,您可以使用perror(在<stdio.h>中声明)来打印有关错误的消息(基于信息集)在errno中)。在这种情况下,perror("open")打印“ open:是目录”(或类似内容)。

相关问题