进程间通信与套接字编程详解
1. 消息队列通信
消息队列是一种强大的进程间通信(IPC)机制,与管道相比,它无需进程自行提供同步方法,具有显著优势。只要消息队列有空间,发送者就能创建队列、放入数据并在接收者启动前退出。
1.1 示例代码及运行结果
if (msgsnd(msgid, (void *)&some_data, MAX_TEXT, 0) == -1) {
fprintf(stderr, "msgsnd failed\n");
exit(EXIT_FAILURE);
}
if (strncmp(buffer, "end", 3) == 0) {
running = 0;
}
exit(EXIT_SUCCESS);
以下是示例运行结果:
$ ./msg2
Enter some text: hello
Enter some text: How are you today?
Enter some text: end
$ ./msg1
You wrote: hello
You wrote: How are you today?
You wrote: end
$
1.2 工作原理
发送者程序使用 msgget 创建消息队列,再用 msgsnd 添加消息;接收者用 msgget 获取队列标识符,接收消息直到收到特殊文本“end”,最后用 msgctl
超级会员免费看
订阅专栏 解锁全文
1969

被折叠的 条评论
为什么被折叠?



