1 管道、fifo 和消息队列通信
管道、fifo 和消息队列的存在的问题是当两个进程进行信息的通信时,信息必须通过内核。如下为其详细的通信步骤:
- 服务器Server 从输入文件中读取。
- 服务器Server 使用管道、fifo 或消息队列将此数据写入IPC 缓冲区消息中。
- 客户端client 从 IPC 通道读取数据,再次要求将数据从内核的 IPC 缓冲区复制到客户端的缓冲区。
- 最后从客户端的缓冲区复制数据。
通过上述步骤,我们可以发现,总共需要四个数据副本(2 个读取和 2 个写入)。
2 共享内存进行进程间通信
通过共享内存进行进程间通信是两个或多个进程可以访问公共内存的概念。通信是通过这个共享内存完成的,一个进程所做的更改可以被另一个进程查看。
共享内存提供了一种方法,让两个或多个进程共享一个内存段。使用共享内存,数据只复制两次——从输入文件到共享内存,从共享内存到输出文件。
使用的系统调用是:
1.ftok