c - 将文件写入“DiagnosticReports”时访问被拒绝
问题描述
任何人都可以向我解释为什么我无法在/Library/Logs/DiagnosticReports
(无论什么原因)下打开文件进行写入(macOS)。
我知道这个目录归根用户所有,但是当我使用带有命令的终端时touch foo
,文件确实可以毫无问题地创建(并且我以相同的非根用户身份运行)。
当我尝试open
在我的 C 程序中使用系统调用时,我收到错误 2(访问被拒绝)。
那是导致错误的代码。
fd = open(path, O_RDWR);
想知道我运行这个程序和我使用终端写入文件之间是否有不同(同样,同一个用户)
解决方案
系统不允许您像打开普通文件一样打开目录。
在open
(以及许多其他系统或库例程)失败后,您可以使用perror
(在 中声明<stdio.h>
)打印有关错误的消息(基于 中设置的信息errno
)。在这种情况下,perror("open")
打印“打开:是一个目录”(或类似的东西)。
推荐阅读
- python-3.x - 如何运行从主 python 脚本中提取数据的多个 python 脚本
- powerbi - 需要帮助了解为什么自定义 OData 端点在动态/powerbi/power 查询中不起作用
- android - 使用 trustzone 服务的应用程序
- javascript - 如何使用 Vue Js 在另一个对象数组中渲染数组
- java - 存储 12 个国家的名称和人口的程序,两个相同大小的数组
- python - 将 pandas 数据帧转换为 xarray 数据集后的大小和顺序更改
- python - 导入多个文件并在 s3 中合并为一个大型镶木地板文件
- tableau-api - 在 tableau 中合并两个数据集,以便我可以显示未来 3 个月的预测
- visual-studio - Visual Studio 代码新更新
- java - 将两个 textArea 按特定顺序合并为一个