我的C程序中的以下行应该提供All/Group/Owner读写权限
mkfifo("/tmp/dumbPipe", 0666)但是一旦我执行了代码并检查了写入位的权限设置,我就得到了
prw-r--r-- 所有者是相同的,因为我在tmp目录中创建管道,这会有问题吗?当我从cmd行运行chmod 666时,所有权限都被正确设置。
发布于 2009-08-27 19:01:34
这是一篇没有评论的文章,只是引用了一些手册。Brievity等。
引用man 3 mkfifo的话:
它由进程的umask以通常的方式修改:创建的文件的权限是(
& ~umask)。
引用自man 2 umask
进程umask的典型默认值是S_IWGRP | S_IWOTH (八进制022)。通常情况下,open(2)的模式参数指定为:
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH (八进制0666)创建新文件时,结果文件的权限为: S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH (因为0666 & ~022 = 0644;即rw-r--r--)。
发布于 2014-07-18 03:38:13
Salam,我知道为时已晚,但对于其他用户,我选择写这篇评论,即使你精确地将0666作为权限,你也应该知道还有另一个因素,称为“进程的文件模式创建",所以问题是:
如何更改当前进程文件的创建模式?
答:在程序开始时使用umask(权限)-并将权限设为0000
http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html
这应该会有帮助。
https://stackoverflow.com/questions/1343144
复制相似问题