我有时会获得文件许可,但是当我创建时,我不会定期获得
文件int fd = open("\tmp\lockfile", O_CREAT | O_EXCL);
。我很少见的O / P.
情景当我ll \tmp\locfile
是
root@cool> ll lockfile
---x--l--- 1 root nms 0 Feb 21 10:40 lockfile
root@cool>`
虽然大多数时候O / P是这样的: -
root@cool> ll importer.lck
---------- 1 user nms 0 Feb 22 10:58 importer.lck`
我知道通过O_CREAT创建文件虽然不提供模式可能是一个问题 以上可能是一个问题。在这种情况下: -
root@cool> ll lockfile
---x--l--- 1 root nms 0 Feb 21 10:40 lockfile
root@cool>
一旦创建了这个的进程结束,我就无法删除锁文件。 chmod在上述情况下也不起作用,但chown似乎有效。
如何阻止使用这些权限创建文件---x--l---
只是通过传递模式?掩码集是: -
root@cesme:/tmp# umask
0022
root@cesme:/tmp#`
答案 0 :(得分:2)
您省略了open()所需的第三个参数,即模式。 (使用O_CREAT时需要该参数)。由于堆栈上没有参数,open使用随机值(即堆栈上的返回地址)。
答案 1 :(得分:1)
artensay - 没有。
http://www.tereknor.com/solaris/solfaq/faq174.html
OP正在搞乱强制锁定,非常不正确。你可能没有看过他的其他帖子。然而,这个位设置它来自一个辅助调用,如fcntl()语句,而不是堆栈垃圾。是的,你是对的,公开声明是错误的。