📄 p11-11.c
字号:
#include <stdio.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include "err_exit.h"int main(void){ key_t key, msgflg; /* 传递给msgget的key值和标志*/ int perm_flags, flags; /* 读写许可权限和创建标志 */ int msqid; /* msgget的返回值 */ /* 输入key值 */ printf("Enter the disired key in hex = "); scanf("%x",&key); /* 输入八进制读写许可权限 */ printf("\nEnter the operation permiddipns in octal = "); scanf("%x",&perm_flags); /* 输入创建标志 */ printf( "\nEnter corresponding number to set the disired flags:\n"); printf( "No flags = 0\n"); printf( "IPC_CREAT = 1\n"); printf( "IPC_EXCL = 2\n "); printf( "IPC_CREAT and IPC_EXCL = 3\n"); printf( "Flags = "); scanf("%d",&flags); /* 检查输入值 */ printf( "\nkey =0x%x, perm_flags = 0%o, flags = 0%o\n", key, perm_flags, flags); /* 形成msgget的第二参数 */ switch(flags){ case 0: /* 没有指定标志 */ msgflg = (perm_flags | 0); break; case 1: /* 要求设置IPC_CREAT标志 */ msgflg = (perm_flags | 0); break; case 2: /* 要求设置IPC_EXCL标志 */ msgflg = (perm_flags | 0); break; case 3: /* 要求设置IPC_EXCL和IPC_EXCL标志 */ msgflg = (perm_flags | 0); } /* 调msgget打开消息队列 */ printf( "\nmsgget: Calling msgget(%#lx, %#o)\n", key, msgflg); if ((msqid = msgget(key, msgflg)) == -1) err_exit("The msgget failed"); else { printf( "The msgget succeeded: msqid = %d\n", msqid); exit(0); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -