Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ';l';文件权限中的位(---x--l--)O/P_C++_Unix_Solaris - Fatal编程技术网

C++ ';l';文件权限中的位(---x--l--)O/P

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>

我有时会获得一个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> 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创建文件的方式,我相信提供一种独占模式可以防止这种情况发生。你说呢?