默认动作:
Term:终止进程。
lgn:忽略信号(默认即时对该种信号忽略 *** 作)。
Core:终止进程,生成Core文件。(查验进程死亡原因,用于gdb调试)
Stop:停止(暂停)进程。
Cont:继续运行进程。
注意从man 7 signal帮助文档中可看到: The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
这里特别强调了9) SIGKILL和19) SIGSTOP信号,不允许忽略和捕捉,只能执行默认动作。甚至不能将其设置为阻塞。
另外需清楚,只有每个信号所对应的事件发生了,该信号才会被递送(但不一定递达),不应乱发信号!!
Linux常规信号一览表
4) SIGILL: CPU检测到某进程执行了非法指令。默认动作为终止进程并产生core文件。
5) SIGTRAP:该信号由断点指令或其他trap 指令产生。默认动作为终止进程并产生core文件。
6) SIGABRT:调用abort函数时产生该信号。默认动作为终止进程并产生core文件。
7) SIGBUS:非法访问内存地址,包括内存对齐出错,默认动作为终止进程并产生core文件。
8)SIGFPE:在发生致命的运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为0等所有的算法错误。默认动作为终止进程并产生core文件。
9) SIGKILL:无条件终止进程。本信号不能被忽略,处理和阻塞。默认动作为终止进程。它向系统管理员提供了可以杀死任何进程的方法。
10) SIGUSE1:用户定义的信号。即程序员可以在程序中定义并使用该信号。默认动作为终止进程。
11) SIGSEGV:指示进程进行了无效内存访问。默认动作为终止进程并产生core文件。
12)SIGUSR2:另外一个用户自定义信号,程序员可以在程序中定义并使用该信号。默认动作为终止进程。
13) SIGPIPE: Broken pipe向一个没有读端的管道写数据。默认动作为终止进程。
14) SIGALRM:定时器超时,超时的时间由系统调用alarm设置。默认动作为终止进程。
15) SIGTERM:程序结束信号,与SIGKILL不同的是,该信号可以被阻塞和终止。通常用来要示程序正常退出。执行shell命令Kill时,缺省产生这个信号。默认动作为终止进程。
16) SIGSTKFLT: Linux 早期版本出现的信号,现仍保留向后兼容。默认动作为终止进程。
17) SIGCHLD:子进程状态发生变化时,父进程会收到这个信号。默认动作为忽略这个信号。
18) SIGCONT:如果进程己停止,则使其继续运行。默认动作为继续/忽略。
19) SIGSTOP:停止进程的执行。信号不能被忽略,处理和阻塞。默认动作为暂停进程。
20)SIGTSTP:停止终端交互进程的运行。按下
21) SIGTTIN:后台进程读终端控制台。默认动作为暂停进程。
22) SIGTTOU:该信号类似于SIGTTIN,在后台进程要向终端输出数据时发生。默认动作为暂停进程。
23) SIGURG:套接字上有紧急数据时,向当前正在运行的进程发出些信号,报告有紧急数据到达。如网络带外数据到达,默认动作为忽略该信号。
24) SIGXCPU:进程执行时间超过了分配给该进程的CPU时间,系统产生该信号并发送给该进程。默认动作为终止进程。
25) SIGXFSZ:超过文件的最大长度设置。默认动作为终止进程。
26) SIGVTALRM:虚拟时钟超时时产生该信号。类似于SIGALRM,但是该信号只计算该进程占用CPU的使用时间。默认动作为终止进程。
27) SGIPROF:类似于SIGVTALRM,它不公包括该进程占用CPU时间还包括执行系统调用时间。默认动作为终止进程。
28)SIGWINCH:窗口变化大小时发出。默认动作为忽略该信号。
29)SIGIO:此信号向进程指示发出了一个异步I0事件。默认动作为忽略。
30)SIGPWR:关机。默认动作为终止进程。
31)SIGSYS:无效的系统调用。默认动作为终止进程并产生core文件。
34)SIGRTMIN-(64)SIGRTMAX: LINUX的实时信号,它们没有固定的含义(可以由用户自定义)。所有的实时信号的默认动作都为终止进程。
信号的产生:
终端按键产生信号
Ctrl+c → 2)SIGINT(终止/中断) “INT”----Interrupt
Ctrl+z → 20)SIGTSTP(暂停/停止) “T”----Terminal
Ctrl+ → 3)SIGQUIT(退出)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)