- 论坛徽章:
- 0
|
关于消息队列
偶刚学,照着stevens的书抄袭了一个程序:
- 1 #include <unistd.h>;
- 2 #include <string.h>;
- 3 #include <stdio.h>;
- 4 #include <sys/ipc.h>;
- 5 #include <sys/msg.h>;
- 6
- 7 int main(void)
- 8 {
- 9 int msqid;
- 10 struct msqid_ds info;
- 11 struct {long mtype;char mtext[48];}buf;
- 12
- 13 msqid = msgget(IPC_PRIVATE,IPC_CREAT|0600);
- 14
- 15 buf.mtype = 1;
- 16 buf.mtext[0] = 1;
- 17 msgsnd(msqid,&buf,1,0);
- 18
- 19 msgctl(msqid,IPC_STAT,&info);
- 20 system("ipcs -q");
- 21
- 22 msgctl(msqid,IPC_RMID,NULL);
- 23
- 24 return 0;
- 25 }
- 26
复制代码
msgctl的第二个参数有3个取值:1,IPC_STAT,取得改消息队列的信息,放在第三个参数中;2,IPC_SET,按照第三个参数的值来设定该消息队列的属性;3,IPC_RMID,删除该消息队列,这时候只要把msgctl的第三个参数填写NULL就行。
我的机器上的以上程序的输出是:
[root@localhost 20]# ./a.out
- ------ Message Queues --------
- key msqid owner perms used-bytes messages
- 0x00000000 262144 root 600 1 1
复制代码
我不懂的是,msqid_ds.msg_perm.mode字段的设定是不是跟文件I/O中的mode完全一样?ipc没有执行许可位,是不是最宽松的权限就是0666了?
初学的问题,请朋友们指教…… |
|