linux进程间的通信

  1. 什么是进程间通信?
    进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。另外,系统空间是“公共场所”,各进程均可以访问,所以内核也可以提供这样的条件。此外,还有双方都可以访问的外设。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。广义上这也是进程间通信的手段,但是一般都不把这算作“进程间通信”。(来自百度百科)

注:因此在用户空间实现进程通信是不可能的,通过Linux内核通信
2. 有哪几种通信方式?
管道通信:无名管道、有名管道(文件系统中有名)
信号通信:信号(通知)通信包括:信号的发送、信号的接收和信号的处理。
IPC(Inter-Process Communication)通信:共享内存、消息队列和信号灯。
以上是单机模式下的进程通信(只有一个Linux内核)
Socket通信:存在于一个网络中两个进程之间的通信(两个Linux内核)。
3. 学习思路
进程通信的学习思路:每一种通信方式都是基于文件IO的思想。
open:功能:创建或打开进程通信对象。函数形式不一样,有的是有多个函数完成。
write: 功能:向进程通信对象中写入内容。函数形式不一样。
read: 功能:从进程通信对象中读取内容。函数形式不一样。
close: 功能:关闭或删除进程通信对象。形式不一样。

这里写图片描述

上面图片是文件I/O读写函数和IPC(Inter-Process Communication)通信:共享内存、消息队列和信号灯相关函数的对比。具体可使用linux下man命令查看具体形式比如(man read,man shmget)。如下图:
这里写图片描述

这里写图片描述

通过man命令查看这些函数的具体形式和参数,即可了解并使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值