进程间通信

本文介绍了进程及其通信方式,包括无名管道和有名管道的特点与创建,以及信号在进程间通信中的角色。无名管道适用于有亲缘关系的进程,而有名管道克服了这一限制,允许任意进程间通信。信号作为一种异步通信方式,由硬件和软件触发,用于进程间的交互。
摘要由CSDN通过智能技术生成

一、进程

    指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程——资源分配的最小单位。

二、进程间的通信

  1. 早期传统的unix进程间通信方式
  2. AT&T的贝尔实验室,对Unix早期的进程间通信进行了改进和扩充,形成了“system V IPC”,其通信进程主要局限在单个计算机内
  3. BSD(加州大学伯克利分校的伯克利软件发布中心),跳过了该限制,形成了基于套接(socket)的进程间通信机制

三、进程间通信的特点

无名管道(pipe):具有亲缘(父子/兄弟)关系的进程间通信,半双工的,数据是在内存中

有名管道(fifo):可用于任意进程间通信,半双工的,有文件名,数据是在内存中.

信号(signal):唯一的异步通信方式

消息队列(msg):常用于c/s模式,全双工的,按消息类型访问,

共享内存(shm):效率最高(直接访问内存),需要同步和互斥

信号量(sem):一般和共享内存配合使用,用来实现同步与互斥

三、传统的unix通信方式

1.无名管道

1.无名管道的特点:

(1).只能用于具有亲缘关系的进程间通信方式(父子进程/兄弟进程)

(2).是一个半双工的通信方式,具有固定的读端和写端

(3).管道可以看成一个特殊的文件,对于它的读写可以使用普通的read(),write()函数,但是它不属于任何文件系统,并且只存在内存中。

2.无名管道创建函数

2.有名管道

1.有名管道特点:

有名管道(FIFO)对无名管道的改进

(1).它可以使互不相关的两个进程实现彼此的通信

(2).该管道可以通过文件名来指出,并且在文件系统中可见.在建立管道之后,两个进程可以把管道文件当做普通文件来读写操作,(open,read/write,close)

(3).FIFO严格遵循先进先出

  1. 有名管道的创建

 

 

 

 3.信号:

    信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式。

1.硬件产生

Ctrl+c    -----SIGINT

Ctrl+z    -----SIGTSTP

Ctrl+\    -----SIGQUIT

2.内核发送

  • alarm()和pause()
  • alarm()也称为闹钟函数,它可以在进程中设置一个定时器。当定时器指定的时间到时,内核就向进程发送SIGALRM信号。
  • pause()函数是用于将调用进程挂起直到收到信号为止。

 

 3.软件发送

 

  1. 信号的处理

SIGKILL  ----9

SIGSTOP ----19 

该两个是不能做处理。

  1. 默认处理
  2. 忽略处理

 

 

3.捕获处理

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值