c - 文件存在时 fopen 失败

标签 c linux fopen file-permissions

我在大型 Linux 守护程序中运行了以下代码片段。 我正在尝试调试日志文件,但当日志文件存在时,fopen 失败

if ( ( debugFILE = fopen( "/home/lala/debug.log", "a" ) ) == NULL )
{
    perror("error: ");
}

我得到的错误是:“权限被拒绝”。

这是特定文件的 ls 输出:

----rw---- 1 lala lala 0 Mar 11 18:26 debug.log

首先,为什么首先使用这些权限创建文件。 二、为什么fopen创建成功,打开却不成功?

最佳答案

fopen creates files with permission 0666 modified by the process's umask.

因此,如果您不在程序内或程序完成后手动更改文件权限。

进程很可能有一个错误的 umask。

您是在程序中还是在调用进程的上下文中设置了umask?您的 umask -S 输出实际上看起来不错(看起来像 umask 002)。

关于c - 文件存在时 fopen 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15343952/

相关文章:

c++ - 您可以删除从 fopen 创建的 FILE 对象吗?

PHP - 在 Raspberry Pi 上打开文件或死亡

检查数组中的值,然后传递给新数组。 C

c - 将结构数据保存到 void* 变量

linux - 通过操作 ext4 创建目录循环

linux - 按列匹配并打印到行

c - 如何为 Coldfire 工具链编译程序?

c - 如何检测数组中的重复项并打印非重复项?

linux - 你能伪造 *nix 正常运行时间吗?

c - 更多地了解 fseek() 和 EOF IN C