linux组合键 发送指定信号_进程信号(Process Signal)

信号概念 信号是事件发生时操作系统对进程的通知机制。

信号产生场景

  • 终端按键

  • 非法内存操作

  • 硬件故障

  • 从用户态切换到内核态

信号处理方式

  • 执行默认操作

  • 忽略

  • 捕捉

信号列表
[root@localhost /]# kill -l

ef71abd9baf5f95700b65adbd217a98a.png

1 ~ 31是不可靠信号(普通信号),34 ~ 64信号是可靠信号(实时信号)。1 ~ 31从Unix借鉴而来,有具体对应的系统事件, 34 ~ 64为后期扩充。没有32、33信号。 每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到,例如 #define SIGHUP 1 等。 信号详解
[root@localhost /]# man 7 signal

a15eac3d77cb83fcb9f455566cd9f0b8.png

1) SIGHUP:当退出Shell时,由该Shell启动的所有进程将收到这个信号。默认动作为终止进程。

2) SIGINT:当按下组合键时,用户终端向正在运行中的由该终端启动的程序发出此信号。默认动作为终止进程。

3) SIGQUIT:当按下组合键时,用户终端向正在运行中的由该终端启动的程序发出此信号。默认动作为终止进程。

4) SIGILL:CPU检测到某进程执行了非法指令。默认动作为终止进程并产生core文件。

5) SIGTRAP:该信号由断点指令或其他trap指令产生。默认动作为终止里程 并产生core文件。

6) SIGABRT:调用abort函数时产生该信号。默认动作为终止进程并产生core文件。

7) SIGBUS:非法访问内存地址,包括内存对齐出错。默认动作为终止进程并产生core文件。

8) SIGFPE:在发生致命的运算错误时发出,不仅包括浮点运算错误,还包括溢出及除数为0等所有的算法错误。默认动作为终止进程并产生core文件。

9) SIGKILL:无条件终止进程,不能被阻塞、处理和忽略,它向系统管理员提供了可以杀死任何进程的方法。默认动作为终止进程。

10) SIGUSR1:用户自定义的信号,可以在程序中定义并使用该信号。默认动作为终止进程。

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:Socket套接字上有紧急数据时,向当前正在运行的进程发出些信号,报告有紧急数据到达,如网络带外数据到达。默认动作为忽略该信号。

24) SIGXCPU:进程执行时间超过了分配给该进程的CPU时间 ,系统产生该信号并发送给该进程。默认动作为终止进程。

25) SIGXFSZ:超过文件的最大长度设置。默认动作为终止进程。

26) SIGVTALRM:虚拟时钟超时时产生该信号,类似于SIGALRM,但是该信号只计算该进程占用CPU的使用时间。默认动作为终止进程。

27) SGIPROF:类似于SIGVTALRM,它不仅包括该进程占用CPU时间还包括执行系统调用时间。默认动作为终止进程。

28) SIGWINCH:窗口变化大小时发出。默认动作为忽略该信号。

29) SIGIO:此信号向进程指示发出了一个异步IO事件。默认动作为忽略。

30) SIGPWR:关机。默认动作为终止进程。

31) SIGSYS:无效的系统调用。默认动作为终止进程并产生core文件。

34)SIGRTMIN ~ 64)SIGRTMAX:Linux的实时信号,它们没有固定的含义(由用户自定义)。所有的实时信号的默认动作都为终止进程。 在以上信号中, 程序不可捕获、阻塞或忽略的信号有: SIGKILL,SIGSTOP 不能恢复至默认动作的信号有: SIGILL,SIGTRAP 默认会导致进程流产的信号有: SIGABRT,SIGBUS,SIGFPE,SIGILL,SIGIOT,SIGQUIT,SIGSEGV,SIGTRAP,SIGXCPU,SIGXFSZ 默认会导致进程退出的信号有:SIGALRM,SIGHUP,SIGINT,SIGKILL,SIGPIPE,SIGPOLL,SIGPROF,SIGSYS,SIGTERM,SIGUSR1,SIGUSR2,SIGVTALRM 默认会导致进程停止的信号有:SIGSTOP,SIGTSTP,SIGTTIN,SIGTTOU 默认进程忽略的信号有:SIGCHLD,SIGPWR,SIGURG,SIGWINCH 此外,SIGIO在SVR4是退出,在4.3BSD中是忽略;SIGCONT在进程挂起时是继续,否则是忽略,不能被阻塞。 cd6710ccaa9b29728df1effcd2cc7929.png

a4006e903ee58e4d4c31445089a96731.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值