知者何南 发表于 2024-8-13 07:46:47

操作系统捕捉信号

捕捉信号

#include <signal.h>

//信号处理函数的格式
typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);
功能:向内核注册一个信号和它的信号处理函数,相当于捕获该信号(绑定信号)
signum:信号码(可以写整数值也可以用宏名)


[*] 在某些UNIX系统中,通过signal注册信号处理函数后,只有一次有效,背面会变回默认处理方式,为了在这种系统中得到长期的信号绑定,可以在信号处理函数的末尾再次通过signal重新注册一次
[*] 可以通过命令 kill 信号码 历程号 给该历程发送信号
训练:测试一下哪些信号不可以被捕捉处理
9和19号信号不能被忽略也不能被不能被捕捉


[*] 普通用户只能给自己的历程发送信号,只有root用户可以给任何历程发送信号
[*] 当信号处理完信号处理函数后是会回到产生信号的代码位置继续执行,如果我们捕捉并处理的是段错误\除零这种信号,就会产生死循环,由于这些错误并没有由于捕捉了信号就消失,而是一直存在并产生信号,精确做法是在他们的信号处理函数中进行数据保存然后直接竣事程序。exit()

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 操作系统捕捉信号