进程间通信方式

一、说明
  Linux的设计思想和机制都是来源于Unix,所以Linux进程间通讯的方式是继承与Unix的。

二、Linux进程间通讯的方式
**1、继承早期的Unix进程间通信方式
1-1、无名管道(pipe);
1-2、有名管道 (fifo);
1-3、信号(signal);

2、继承后期(Unix贝尔实验室版和校园版分家)的Unix进程间通信方式:System V IPC
2-1、共享内存(share memory);
2-2、消息队列(message queue);
2-3、信号灯集(semaphore set);

3、套接字(socket)
  以上6种进程间通信方式是用在本地一台计算机的不同进程间通信,而**套接字(socket)**即可用于本地一台计算机的不同进程间通信,但更多的是用于不同主机通过网络来通信。

三、无名管道特点
在这里插入图片描述
1、只能用于具有亲缘关系的进程之间的通信,如父子、祖孙、兄弟等。原因:无名管道无名;无名管道有一个进程创建,所以能访问这个无名管道的只有本进程和本进程衍生的进程;

2、单工的通信模式,具有固定的读端和写端;

3、无名管道创建时会返回两个文件描述符,分别用于读写管道。

四、有名管道特点
1、有名管道有名称、有路径,对应管道文件,可以用于任意进程之间通信;

2、打开有名管道时可指定读写方式(以读方式打开、以写方式打开、以读写方式打开);

3、有名管道被创建时有一个对应的文件被创建,即其有名称有路径,可以通过文件I/O对其操作。但是往管道内写入的内容却是存放在内存中的(这和无名管道是一样的),当所有的读端和写段被关闭时,无论是有名管道还是无名管道,内存中存放的其内容都将不存在。

五、信号(signal)
1、信号是什么
1-1、信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式;
1-2、linux内核通过信号通知用户进程,不同的信号类型代表不同的事件 ;
1-3、Linux对早期的unix信号机制进行了扩展。

2、进程对信号的响应方式
缺省方式;
忽略信号;
捕捉信号。

3、常用信号
在这里插入图片描述
在这里插入图片描述

六、System V IPC 对象
1、IPC 对象包含:
1-1、共享内存(share memory);
1-2、消息队列(message queue);
1-3、信号灯集(semaphore set);

2、IPC 对象特点
2-1、每个IPC对象有唯一的ID;
2-2、IPC对象创建后一直存在,直到被显式地删除;
2-3、每个IPC对象有一个关联的KEY(重要)。KEY可以看成是IPC的一个属性,KEY值可以使不同的进程找到同一个IPC对象(IPC的ID没有这样的功能)。

3、IPC命令
3-1、ipcs :查看系统所有的IPC对象;
3-2、ipcrm:删除IPC对象。

七、共享内存(share memory)
1、共享内存特点
1-1、共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝;
1-2、共享内存在内核空间创建,可被进程映射到用户空间访问,使用灵活;
1-3、由于多个进程可同时访问共享内存,因此需要同步和互斥机制配合使用;

2、共享内存使用步骤
2-1、创建/打开共享内存;
2-2、映射共享内存,即把指定的共享内存映射到进程的地址空间用于访问;
2-3、读写共享内存;
2-4、撤销共享内存映射;
2-5、删除共享内存对象。

八、消息队列(message queue)
1、消息队列介绍
1-1、消息队列是System V IPC对象的一种;
1-2、消息队列由消息队列ID来唯一标识;
1-3、消息队列就是一个消息的列表。用户可以在消息队列中添加消息、读取消息等。

2、消息队列特点
  消息队列最大的特点是支持不同类型的消息,即可以按照类型来发送/接收消息,这样不同类型的进程就可以用一个消息队列来互相通信。

3、消息队列使用步骤
3-1、打开/创建消息队列 msgget;
3-2、向消息队列发送消息 msgsnd;
3-3、从消息队列接收消息 msgrcv;
3-4、控制消息队列 msgctl。

4、消息的格式
4-1、通信双方首先定义好统一的消息格式;
4-2、用户根据应用需求定义结构体类型;
4-3、首成员类型为long,代表消息类型(正整数);
4-4、其他成员都属于消息正文。

九、信号灯集(semaphore set)
1、信号灯
1-1、定义:信号灯也叫信号量,它是用于进程/线程同步或互斥的机制。
1-2、信号灯的类型
Posix 无名信号灯(线程间通讯)
Posix有名信号灯(进程间通讯)
System V 信号灯 (本节介绍内容)

2、计数信号灯
计数信号灯包括 Posix 无名信号灯和 Posix有名信号灯。它代表的一种资源,信号灯有值,其值就是代表资源的数量。

3、System V IPC 对象的信号灯集(semaphore set)
3-1、信号灯集定义
System V IPC 信号灯集是一个或多个计数信号灯的集合。

3-2、信号灯集特点
3-2-1、可同时操作集合中的多个信号灯;
3-2-2、申请多个资源时避免死锁。

3-3、信号灯集使用步骤
3-3-1、打开/创建信号灯 semget;
3-3-2、信号灯初始化 semctl;
3-3-3、P/V操作 semop;
3-3-4、删除信号灯 semctl。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值