shmget(key,size,flag)的第三个参数可否为0?

leiajay 2010-12-08 10:50:22
现在我知道第三个参数可以去IPC_CREAT和IPC_EXCL的组合,但是看见一程序中if ( (Id = shmget(shmKey,(size_t)0,0)) == -1 )第三个参数为0,flag为0是什么意思?

#define IPC_CREAT 01000 /* Create key if key does not exist. */
#define IPC_EXCL 02000
...全文
505 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
leiajay 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yihandrensunyong 的回复:]
shmget(keyval,segsize,IPC_CREAT|0660)
0666 每一位表示一种类型的权限,比如,第一个0是UID,第一个表示拥有者的权限,第二个6表示同组权限,第3个6表示他人的权限。
第三个参数为0 可能是shmget(keyval,segsize,IPC_CREAT|000)

我认为是。。。
[/Quote]

现在清楚了
事实上shmget(shmKey,(size_t)0,oflag)第三个参数oflag为IPC_xxx|mode,无IPC_xxx标识表示引用已存在的共享内存,mode为0表示无权限检查。所以oflag为0表示不做权限检查,打开已经存在的共享内存
就想叫yoko 2010-12-08
  • 打赏
  • 举报
回复
++[Quote=引用 2 楼 hai040 的回复:]
man
[/Quote]
yihandrensunyong 2010-12-08
  • 打赏
  • 举报
回复
shmget(keyval,segsize,IPC_CREAT|0660)
0666 每一位表示一种类型的权限,比如,第一个0是UID,第一个表示拥有者的权限,第二个6表示同组权限,第3个6表示他人的权限。
第三个参数为0 可能是shmget(keyval,segsize,IPC_CREAT|000)

我认为是。。。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧