13、进程间通信与网络编程技术详解

进程间通信与网络编程技术详解

1. 消息队列与共享内存

消息队列是一种重要的进程间通信(IPC)机制。在消息队列的发送和接收操作中,以 mq_send mq_receive 为例,当用户 1 进程调用 mq_send 时,Linux 内核会将待发送的消息从用户空间复制到内核空间;当用户 2 进程调用 mq_receive 时,内核又会将消息从内核空间复制到用户空间。

消息队列的原子性与消息大小有关。如果消息小于 pipe_BUF ,消息的传递能保证原子性;否则,开发者需要提供同步机制。此外, perror 方法能以描述性格式输出最后一个错误( errno ),方便开发者调试。

共享内存是一种无需内核作为进程间中介的快速 IPC 方式。下面我们通过一个简单的聊天应用来介绍如何使用 POSIX 共享内存 API:

#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#define STORAGE_ID1 "/SHM_USER1"
#define STORAGE_ID2 "/SHM_USER2"
#define STORAGE_SIZE 32

int main(int argc, char *arg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值