C++ ';l';文件权限中的位(---x--l--)O/P
我有时会获得一个l位的文件权限,但在我创建时不是经常这样C++ ';l';文件权限中的位(---x--l--)O/P,c++,unix,solaris,C++,Unix,Solaris,我有时会获得一个l位的文件权限,但在我创建时不是经常这样 int fd=open的文件(“\tmp\lockfile”,O|u CREAT | O|u EXCL)。我得到的订单很少 当我执行ll\tmp\locfile时的场景是 root@cool> ll lockfile ---x--l--- 1 root nms 0 Feb 21 10:40 lockfile root@cool>` 大多数情况下,O/p是这样的:- root@cool>
int fd=open的文件(“\tmp\lockfile”,O|u CREAT | O|u EXCL)代码>。我得到的订单很少
当我执行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#`
您省略了open()所需的第三个参数,即mode。(使用O_CREAT时需要此参数)。由于堆栈上没有参数,open使用随机值(即堆栈上的返回地址)。artensay-否
http://www.tereknor.com/solaris/solfaq/faq174.html
这个OP搞乱了强制锁定,非常错误。你可能没有读过他的其他帖子。然而,设置该位的是一个辅助调用,如fcntl()语句,而不是堆栈垃圾。是的,您是对的,open语句是错误的。artensay提到它从堆栈中获取它可能是错误的,但我想根本原因是使用O_CREAT创建文件的方式,我相信提供一种独占模式可以防止这种情况发生。你说呢?