当前位置: 技术问答>linux和unix
用C建立消息队列时权限位的问题,如0600
来源: 互联网 发布时间:2016-03-17
本文导语: 用下列代码建立私有消息队列 int queue_id = msgget(IPC_PRIVATE, IPC_CREAT| 0600); //八进制??? 第一个参数(队列key)说明该队列是私有的,即只有创建着和子进程可以访问到;可是第二个参数(队列标志)是什么意思呢...
用下列代码建立私有消息队列
int queue_id = msgget(IPC_PRIVATE, IPC_CREAT| 0600); //八进制???
第一个参数(队列key)说明该队列是私有的,即只有创建着和子进程可以访问到;可是第二个参数(队列标志)是什么意思呢?
IPC_CREATE的意思好象是:若欲打开的队列不存在则自动建立该消息队列。
可是0600的含义就看不懂了。。。为什么说是与进程相同的用户才能访问?
书上说,第二个参数的低九位用来定义访问权限,类似于文件的访问权限。权限被分为三组:用户,组和其他。每一组中,第一位表示读的权限,第二位表示写的权限,第三位执行的权限。
可是为什么用0600就表示了这些......
哎,基础东西没学好... 兄弟们来帮忙啊~~~
int queue_id = msgget(IPC_PRIVATE, IPC_CREAT| 0600); //八进制???
第一个参数(队列key)说明该队列是私有的,即只有创建着和子进程可以访问到;可是第二个参数(队列标志)是什么意思呢?
IPC_CREATE的意思好象是:若欲打开的队列不存在则自动建立该消息队列。
可是0600的含义就看不懂了。。。为什么说是与进程相同的用户才能访问?
书上说,第二个参数的低九位用来定义访问权限,类似于文件的访问权限。权限被分为三组:用户,组和其他。每一组中,第一位表示读的权限,第二位表示写的权限,第三位执行的权限。
可是为什么用0600就表示了这些......
哎,基础东西没学好... 兄弟们来帮忙啊~~~
|
0600表示为二进制为:1 1 0 0 0 0 0 0 0
(用户)读 写 执行 (组)读 写 执行 (其它)读 写 执行
即如果对应的某一位上是"1",就有此权限,"0"则没有此权限。
(用户)读 写 执行 (组)读 写 执行 (其它)读 写 执行
即如果对应的某一位上是"1",就有此权限,"0"则没有此权限。