进程间的通信2——有名管道、信号

通信方式:(1)单工://广播;单一方向的数据通道;

                (2)半双工://对讲机;同一时刻只能有一个方向;

                (3)全双工://手机电话;同一时刻两个方向都可以通信。

管道一般多为半双工;无名管道只能用于亲缘关系进程间有名管道可以实现两个不相关的进程间通信。管道文件都不支持定位操作。

一、有名管道

1、定义:

是一种(内核/内存中)特殊的文件。<系统层面有名字>

2、特点:

(1)存在于内存中;(2)在系统中有一个对应名称;(3)看文件大小 0 bytes。

3、创建

        int mkfifo(conse char *pathname(管道路径+名称),mode_t mode(权限))

4、删除

        int remove(const char *pathname)

二、信号

1、定义

信号是一种异步的通信方式;本身并不能传递大量数据。

也称软中断;<软件层面上实现一个类似中断的过程>

2、同步、异步

(1)说明对象一定是两个;

(2)如果步调一致——同步;如果步调不一致——异步。

3、编程

(1)signal

sighandler_t signal(int signum(要处理的信号编号) , sighandler_t handler(具体处理))

功能:信号处理函数的注册函数。

返回值:成功——返回处理前函数入口地址;

             失败——SIG_ERR.

(2)sighandler_t类型

实质上是typedef void (*sighandler_t)(int(表示捕获到的信号编号)      函数指针<指向信号处理函数>

        handler参数可以是:SIG_IGN  忽略;SIG_DFL  默认。

(3)kill

        int kill(pid_t pid(进程pid) , int sig(信号编号))

功能:发送一个信号给一个进程。

注意:不能被阻塞、处理和忽略的信号有:SIGKILL 、SIGSTOP

常用信号:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值