/*
* msghandler.c
*
* Created on: 2011-11-15
* Author: snape
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/msg.h>
#include <fcntl.h>
#include <unistd.h>
//usage : msghandler KEY [c|d]
// KEY指定消息队列得关键字 c为创建 d为删除
int main(int argc, char **argv) {
int KEY;
if (argc != 2 && argc != 3) {
fprintf(stderr, "usage : msghandler KEY [c|d]\n");
exit(1);
}
KEY = atoi(argv[1]);
printf("%x\n",KEY);
//查看ipc 消息队列信息
if (argc == 2) {
execlp("ipcs", "ipcs", NULL);
exit(0);
}
//创建
if (argc == 3 && strcmp(argv[2], "c") == 0) {
if (msgget(KEY, 0666 | IPC_CREAT | IPC_EXCL) < 0) {
fprintf(stderr, "create message queue %x error!\n", KEY);
exit(1);
} else {
fprintf(stderr, "creat message queue %x success!\n", KEY);
//execlp("ipcs", "ipcs", NULL);
exit(0);
}
}
//删除
if (argc == 3 && strcmp(argv[2], "d") == 0) {
if ((msgctl(msgget(KEY, 0666), IPC_RMID, NULL)) < 0) {
fprintf(stderr, "delete message queue %x error!\n", KEY);
exit(1);
} else {
fprintf(stderr, "delete message queue %x success!\n", KEY);
//execlp("ipcs", "ipcs", NULL);
exit(0);
}
}
return 0;
}
IPC--消息队列 message queue --msgctl 函数(创建 删除 查看 综合运用)
最新推荐文章于 2024-10-09 21:24:03 发布