进程间通信2

一目的:数据传输,资源共享,通知事件,进程控制

二.分类:管道和有名管道,信号,消息队列,共享内存,信号量,套接字

1.管道通信:管道是单向的,先进先出的,它把一个进程的输出和另一个进程的输入连接在一起,一个进程在管道的尾部写入数据,另一个进程从管道的头部读出数据。

注意事项:必须在系统调用fork()前调用pipe(),否则子进程将不会继承文件描述符。

2.信号通信:信号机制是unix系统中最为古老的进程间通信机制,很多条件可以产生同一信号:1.当用户按某些按键时,产生信号2.硬件异常产生信号3.用户用kill函数将信号发送给另一进程4.用户可以kill命令将信号发送给其他进程

信号处理的3种方式:1.忽略此信号2.执行用户希望的动作3.执行系统默认的动作

3.共享内存:是被多个进程共享的一部分物理内存,共享内存是进程间共享数据的一种最快的方法。一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。

实现共享内存的两个步骤:1.创建共享内存2.映射共享内存

4.消息队列:就是一个消息的链表,可以把消息看做一个记录,具有特定的格式,进程可以向中按照一定的规则添加新消息,另一个进程则可以从消息队列中读走消息。

5.信号量:主要用途是保护临界资源,进程可以根据它判定是否能够访问某些共享资源,除了用于访问控制外,还可以用于进程同步。

分类:二值信号灯,计数信号灯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值