进程间通讯:
进程的地址空间是独立的,你在一个进程内定义了个局部变量或者全局变量,别的进程能不能够访问到?不能。
如果多个进程间需要 进行数据的交换或者传递,就需要使用进程间通讯(IPC)
IPC:进行数据交换或者传递的进程间的一个桥梁
进程间通讯的方法:
最简单的办法就是使用文件。
缺点:效率低, 硬件操作和访问的速度太慢
管道:
现代操作系统才实现的,实现方式是利用文件系统的接口
管道: 有名管道 和 无名管道,类似于 一根水管,
一端写,另外一端读
在实际使用的时候 把他当作半双工
无名管道:pipe
有名管道: fifo
信号
信号(signal) 是IPC的另外一种方式,信号在进行通信时是不带数据的,只是一个单纯的信号
信号在内核里实现时,是一个整数,不同的信号就对应不同的整数值,并且含义也不一样。
常用的信号有如下几种:
信号名 值 收到信号的默认动作 解释
SIGINT 2 TERM 终止进程 ctrl + c
SIGUIT 3 CORE quit from keybord
ctrl+d
SIGPIPE 13 TERM 在操作管道时,如果 读端关闭,写入写端 的进程就会 退出
SIGCHLD 20,17,18 Ign 子进程停止或者死亡
父进程会收到SIGCHLD
SIGKILL 9 TERM 杀死进程
该信号不能被屏蔽
SIGSTOP 17,19,23 Stop 终止进程
该信号不能被屏蔽
信号的处理流程:
在内核中是通过软中断实现的。
在内核中,收到一个信号时,信号有三种处理方式:
1) default 默认处理方式
2) ignore 忽略
3) 自定义的,执行用户自定义的处理函数
进程的地址空间是独立的,你在一个进程内定义了个局部变量或者全局变量,别的进程能不能够访问到?不能。
如果多个进程间需要 进行数据的交换或者传递,就需要使用进程间通讯(IPC)
IPC:进行数据交换或者传递的进程间的一个桥梁
进程间通讯的方法:
最简单的办法就是使用文件。
缺点:效率低, 硬件操作和访问的速度太慢
管道:
现代操作系统才实现的,实现方式是利用文件系统的接口
管道: 有名管道 和 无名管道,类似于 一根水管,
一端写,另外一端读
在实际使用的时候 把他当作半双工
无名管道:pipe
有名管道: fifo
信号
信号(signal) 是IPC的另外一种方式,信号在进行通信时是不带数据的,只是一个单纯的信号
信号在内核里实现时,是一个整数,不同的信号就对应不同的整数值,并且含义也不一样。
常用的信号有如下几种:
信号名 值 收到信号的默认动作 解释
SIGINT 2 TERM 终止进程 ctrl + c
SIGUIT 3 CORE quit from keybord
ctrl+d
SIGPIPE 13 TERM 在操作管道时,如果 读端关闭,写入写端 的进程就会 退出
SIGCHLD 20,17,18 Ign 子进程停止或者死亡
父进程会收到SIGCHLD
SIGKILL 9 TERM 杀死进程
该信号不能被屏蔽
SIGSTOP 17,19,23 Stop 终止进程
该信号不能被屏蔽
信号的处理流程:
在内核中是通过软中断实现的。
在内核中,收到一个信号时,信号有三种处理方式:
1) default 默认处理方式
2) ignore 忽略
3) 自定义的,执行用户自定义的处理函数