进程间通信:消息队列与套接字详解
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;
}
1.2 工作原理
发送者程序使用 msgget 创建消息队列,再用 msgsnd 添加消息;接收者通过 msgget 获取队列标识符,接收消息直到收到特殊文本“end”,最后用 msgctl 删除队列。
1.3 CD数据库应用
可将CD数据库应用改为使用消息队列。由于传递的信息较小,直接用消息队列传递请求和响应是明智之选。若数据量大,可考虑在共享内存中传递实际数据,用信号量或消息传递“令牌”通知另一进程数据可用。
1.3.1 服务器函数修改
- 包含头文件和定义结构 :
超级会员免费看
订阅专栏 解锁全文
726

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



