c – 文件存在时fopen失败

我在一个庞大的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).

上一篇:中断之独立按键


下一篇:2、操作系统-中断