UNIX环境高级编程之第10章:信号

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/youngyangyang04/article/details/48576243

10.1 引言

信号是软件中断.很多比较重要的应用程序都需要处理信号. 信号提供一种处理异步时间的方法,例如,终端用户键入中断键,会通过 信号机制停止一个程序,或及早终止管道中的下一个程序.

10.2 信号概念

首先每个信号都有一个名字.这些名字都是以SIG开头.例如,SIGABRT是夭折信号,当进程调用 abort函数是产生这种信号.

10.3 函数signal

UNIX系统信号机制最简单的接口是signal函数

#include <signal.h>
void (*signal(int signo, void (*func)(int)))(int);

signo参数是一下图中的信号名.func的值是常量SIG_IGN,常量SIG_DFL或者当接到此信号后要调用的函数的地址.SIG_IGN向内核表示忽略此信号(SIGKILL和SIGSTOP不能忽略).SIG_DFL标示接到信号后的动作是系统默认动作
程序启动
当执行一个程序时,所有信号的状态都是系统默认或者忽略
进程创建
当一个进程调用fork时,其子进程集成父进程的信号处理方式

10.4 不可靠的信号

不可靠再这里指:信号可能会丢失,一个信号发生了,但进程却可能一直不知道这一点

10.5 中断的系统调用

10.6 可重入函数

进程捕捉到信号并对其进行处理时, 进程正在执行的正常指令序列就被信号处理程序临时中断,它首先执行该信号处理程序中的指令.

10.7 SIGCLD语义

10.8 可靠信号术语和语义

10.9 函数kill和raise

kill 函数将信号发送给进程或进程组,raise函数则允许进程相自身发送信号
#include<signal.h>
int kill (pid_t pid, int signo);
int raise (int signo);










猜你喜欢

转载自blog.csdn.net/youngyangyang04/article/details/48576243