在看一个程序创建信号量fullid = semget(IPC_PRIVATE,1,IPC_CREAT|00666);中semget()的各个参数为什么是IPC_PRIVATE IPC_CREAT|00666不明白。查下资料,在XSI IPC中做了详细的介绍 。
=======================================
=======================================
3、XSI IPC创建必须满足的条件
XSI IPC创建函数msgget\semget\shmget都需要两个类似的参数key_t和一个×××的flag.
在满足下列2个条件之一时,才可能成功创建一个XSI IPC结构。
1) key为IPC_PRIVATE
2) key还没有和一个IPC结构相关联,并且flag指定了IPC_CREAT标志。
如果希望创建一个新队列,而且要确保不是引用具有同一标识符的一个现存IPC结构,那
么必须在flag中指定IPC_CREAT和IPC_EXCL位。
4、XSI IPC的访问
消息队列在访问的时候key必须要等于创建该队列的键,并且不应该指定IPC_CREAT和
IPC_PRIVATE。
5、XSI IPC结构中的ipc_perm结构
struct ipc_perm{
uid_t uid; /* owner’s effective user id */
gid_t gid; /* owner’s effective group id */
uid_t cuid; /* creator’s effective user id */
gid_t cgid; /* creator’s effective group id */
mode_t mode; /* access mode */
...
mode: 权限 位
用户读 : 0400
用户写 : 0200
组读 : 0040
组写 : 0020
其他读 : 0004
其他写 : 0002
转载于:https://blog.51cto.com/qq164587043/52194