陕西富国建设工程有限公司网站,企业网站404页面设计,WordPress大前端5,成都创新互联做网站信号的基本概念
1. 信号的概念
信号是Linux系统响应某些条件产生的一些事件。接收到信号的进程会相应地采取一些行动。
2. 信号的生成
信号是由于某些错误条件而生成的#xff0c;如内存段冲突、浮点处理器错误或非法指令等。信号的生成其实就是一种软件层次的中断#x…信号的基本概念
1. 信号的概念
信号是Linux系统响应某些条件产生的一些事件。接收到信号的进程会相应地采取一些行动。
2. 信号的生成
信号是由于某些错误条件而生成的如内存段冲突、浮点处理器错误或非法指令等。信号的生成其实就是一种软件层次的中断信号由shell和终端处理器生成来引起中断信号还可以作为在进程间传递消息或修改行为的一种方式明确地由一个进程发送给另一个进程。一个进程要么正常结束要么就是某一个信号把这个进程中断了。
3.信号的响应方式
信号产生之后进程接收这个信号然后做出一些响应做出的响应有三种方式默认方式、忽略和自定义。改变这三种响应方式要通过系统调用signal()。
与信号有关的系统调用在“signal.h”头文件中有声明。
4. 信号名称的定义
信号的值在系统源码中的定义如下它们都以SIG开头
1#define SIGHUP 1 连接挂断 2#define SIGINT 2 终端中断键盘按下Ctrlc时会产生该信号 3#define SIGQUIT 3 终端退出 4#define SIGILL 4 *非法指令 5#define SIGTRAP 5 由断点指令或其它陷阱trap指令产生 6#define SIGABRT 6 调用abort函数生成的信号 7#define SIGIOT 6 建立CORE文件,执行I/O自陷 8#define SIGBUS 7 建立CORE文件,总线错误 9#define SIGFPE 8 建立CORE文件,浮点异常 10#define SIGKILL 9 终止进程杀死进程该信号的响应方式不允许改变 11#define SIGUSR1 10 终止进程用户定义信号1 12#define SIGSEGV 11 建立CORE文件,段非法错误 13#define SIGUSR2 12 终止进程用户定义信号2 14#define SIGPIPE 13 终止进程、向一个没有读进程的管道写数据读端关闭的描述符写端写入时产生该信号会终止程序 15#define SIGALRM 14 终止进程计时器到时 16 #define SIGTERM 15 终止进程软件终止信号系统kill命令默认发送的信号 17#define SIGSTKFLT 16 18#define SIGCHLD 17 忽略信号当子进程停止或退出时会默认给父进程发送该信号 19#define SIGCONT 18 忽略信号继续执行一个停止的进程 20#define SIGSTOP 19 停止进程 非终端来的停止信号 21#define SIGTSTP 20 停止进程终端来的停止信号 CtrlZ 22#define SIGTTIN 21 停止进程后台进程读终端 23#define SIGTTOU 22 停止进程后台进程写终端 24#define SIGURG 23 忽略信号I/O紧急信号
5.信号的实现
收到信号的实体是一个进程信号的实现在进程的PCB中记录在PCB中有一个长整型变量signalong a它有32个位一开始它的值都为0表示没有收到信号假如现在通过kill(pid,sig)发送了一个信号然后通过pid找到对应的PCB中的a如果通过信号代号把a的1偏移对应的代号个位置就代表当前进程收到了对应的代号的信号接下来要处理这个信号处理完这个信号的时候在把a恢复成0就可以了。如果极短时间内连续发送多个代号相同的信号其实只能响应一次因为第一次发送该信号时就已经把a的1偏移了对应的代号个位置后面再发送相同的信号时是没有变化的所以当a发生偏移还没有恢复之前连续发送相同的信号没有意义。