2016-04-01 27 views

回答

1

shmget的的手册页说:

除了上述标志, shmflg的至少显著9位指定授予所有者,组和 其他用户的权限。这些位具有相同的格式,并且与open(2)的mode参数 具有相同的含义。

因此,让我们检查的开放手册页:

The following symbolic constants are provided for mode: 
- S_IRWXU 00700 user (file owner) has read, write, and execute permission 
- S_IRUSR 00400 user has read permission 
- S_IWUSR 00200 user has write permission 
- S_IXUSR 00100 user has execute permission 
- S_IRWXG 00070 group has read, write, and execute permission 
- S_IRGRP 00040 group has read permission 
- S_IWGRP 00020 group has write permission 
- S_IXGRP 00010 group has execute permission 
- S_IRWXO 00007 others have read, write, and execute permission 
- S_IROTH 00004 others have read permission 
- S_IWOTH 00002 others have write permission 
- S_IXOTH 00001 others have execute permission 

整数值编码为二进制1.1亿,对应于标志,即S_IRUSR|S_IWUSR

  • 用户h作为写权限
  • 用户具有读取权限

谁写这段代码幸免2分钟他的生命,浪费更多的其他许多人的生命的时候,包括我在内。

恭喜。 :)


编辑:感谢@Fabio图拉蒂您指出了一个重大错误;)

+1

确实101111110对应的标志374?我会说它是576.那就是:用户已经读取并执行,组已经读取,写入和执行,而其他人已经读取和写入。甚至在此之前:你确定384是以二进制方式编码的吗?它不应该是110000000?也就是说,用户有阅读和写作,而其他人都没有?你的号码是101111110,实际上是382的二进制编码,而不是384.你能检查吗? –

+0

@FabioTurati我错误地输入了Python中的最初数字,并从那里开始走下坡路。感谢您指出错误:) –

+0

不客气。顺便说一句好的答案! –