首页 > 解决方案 > 将文件写入“DiagnosticReports”时访问被拒绝

问题描述

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

我知道这个目录归根用户所有,但是当我使用带有命令的终端时touch foo,文件确实可以毫无问题地创建(并且我以相同的非根用户身份运行)。

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

那是导致错误的代码。

fd = open(path, O_RDWR);

想知道我运行这个程序和我使用终端写入文件之间是否有不同(同样,同一个用户)

标签: cmacos

解决方案


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

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


推荐阅读