我有以下代码片段运行在一个庞大的Linux守护进程中。 我试图debugging到日志文件,但是当日志文件存在时, fopen失败
if ( ( debugFILE = fopen( "/home/lala/debug.log","a" ) ) == NULL ) { perror("error: "); }
我得到的错误是:“权限被拒绝”。
----rw---- 1 lala lala 0 Mar 11 18:26 debug.log
首先,为什么这些文件是在这些权限下创build的。 其次,为什么打开时打开成功,而不打开?
CACLS混乱
gammu-smsd RunOnReceive脚本结果退出状态2
QFileInfo :: isWritable()在Windows 7上以完全权限返回false
PowerShell文件夹权限错误 – 部分或全部标识引用无法转换。
Linux(Ubuntu 9.04)的权限 – 我如何删除rws?
使用git时,Mac / Windows文件权限问题
因此,如果您不在程序中或程序完成后手动更改文件权限。
你是否在你的程序中或在调用过程的上下文中设置了umask ? 你的umask -S输出实际上看起来很好(看起来像umask 002 )。
“a”选项总是会创建一个不存在的文件,如果成功则返回一个有效的指针。 它是根据进程的umask设置创建的 – 在您的情况下,进程创建的文件没有适当的权限,因此下一次fopen失败。 如果你不想和umask混淆,只需在fopen之前和之后调用它:
chmod("/home/lala/debug.log",0644);
如果文件不存在,就可以用这种方法调用chmod ,除了设置errno外,什么也不做。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。