我在大型 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 permission0666
modified by the process'sumask
.
因此,如果您不在程序内或程序完成后手动更改文件权限。
进程很可能有一个错误的 umask。
您是在程序中还是在调用进程的上下文中设置了umask
?您的 umask -S
输出实际上看起来不错(看起来像 umask 002
)。
关于c - 文件存在时 fopen 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15343952/