43、进程间通信:消息队列与套接字详解

进程间通信:消息队列与套接字详解

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 服务器函数修改
  • 包含头文件和定义结构
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值