mkfifo文件权限未正确执行

wha*_*hat 7 c unix permissions named-pipes

我的C程序中的以下行应提供All/Group/Owner读写权限

mkfifo("/tmp/dumbPipe", 0666)
Run Code Online (Sandbox Code Playgroud)

但是一旦我执行了代码并检查了写入位的权限,我就会结束

prw-r--r-- 
Run Code Online (Sandbox Code Playgroud)

所有者是相同的,这是一个问题,因为我在tmp目录中创建管道?当我从cmd行运行chmod 666时,所有权限都被正确设置.

P S*_*ved 9

这是一篇没有评论的帖子,只是引用手册.Brievity等

从男人3 mkfifo引用:

它以通常的方式由进程的umask修改:创建的文件的权限是(mode&~umask).

从男人2 umask引用

进程umask的典型默认值是S_IWGRP | S_IWOTH(八进制022).在通常情况下,open(2)的mode参数指定为:

      S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH

  (octal 0666) when creating a new file, the permissions on the resulting file will be:

      S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH

  (because 0666 & ~022 = 0644; i.e., rw-r--r--).
Run Code Online (Sandbox Code Playgroud)