8.5 信号
Unix信号:一种更高层的软件形式的异常,它允许进程中断其他进程.
1. 信号术语
发送一个信号到目的进程有两步:
- 发送信号: 发送一个信号给目的进程.
- 接收信号: 当目的进程被内核强制对信号的发送做出反应时,目的进程就接收了信号.
待处理信号:
一个只发出而没有被接收的信号叫做待处理信号。一种类型至多只会有一个待处理信号.
如果一个进程有一个类型为k的待处理信号,那么任何接下来发送到这个进程的类型为k的信号都不会排队等待,它们只是被丢弃.
一个进程也可以选择性地阻塞接收某种信号。一种信号被阻塞时,它仍可以被发送,饭产生的待处理信号不会被接收,直到目的进程取消对这种信号的阻塞.
2. 发送信号
1.进程组:
每个进程都只属于一个进程组, 默认地,一个子进程和它的父进程同属于一个进程组。
getpgrp: 获取当前进程的进程组ID
setpgid: 将进程pid的进程组改为pgid。若pid为0,就使用当前进程的pgid。若pgid为0,就用pid作为进程组ID.
#include <unistd.h>
pid_t getpgrp(void); 返回:调用进程的进程组ID
int setpgid(pid_t pid, pi