Linux信号(系统编程信号) 待我称王封你为后i 2022-11-25 11:44 186阅读 0赞 更多资料请点击:[我的目录][Link 1] 本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。 Linux信号: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc5MzE4MQ_size_16_color_FFFFFF_t_70] 信号的作用:linux通过信号去控制进程的行为动作(程序的退出,程序的暂停,程序的继续) 信号总共有四种响应方式: 第一种:信号的默认响应动作(linux系统已经规定好的) 第二种:改变信号的响应动作 第三种:信号的忽略 第四种:信号的阻塞(屏蔽) 常用信号 SIGINT------------------相当于ctrl+c SIGCONT--------------程序继续 SIGSTOP--------------程序暂停 SIGKILL----------------杀死进程 注意:SIGKILL 和 SIGSTOP这两个信号既不能改变它们的响应动作,也不能忽略,其他的信号可以 (1)信号的发送 终端手动输入: kill -信号的序号 进程的ID号 kill -信号的名字 进程的ID号 killall -信号的序号 进程的名字 killall -信号的名字 进程的名字 程序中: 头文件: #include <signal.h> 函数原型: int kill(pid_t pid, int sig); 参数: pid: 进程的ID号 sig: 信号的序号 返回: 成功:0 失败:-1 (2)捕捉信号并改变信号的响应动作 头文件: #include <signal.h> 函数原型: void (*signal(int sig, void(*func)(int)))(int); 参数: sig: 表示捕捉到的信号的序号 func: void(*p)(int) 改变信号的响应动作 SIG_IGN 忽略信号 SIG_DFL 按照信号默认的动作响应 返回值: 成功 最近一次调用该函数时第二个参数的值 失败 SIG_ERR signal函数总共有三个功能: 功能一:改变信号的响应动作 功能二:SIG\_IGN 忽略信号,信号发送给进程,进程直接舍弃 功能三:SIG\_DFL 按照信号默认的动作响应 (3)阻塞进程,等待信号的到来 头文件: #include <unistd.h> 函数原型: int pause(void); 特点:信号不来,一直阻塞,信号来了就不阻塞了 (4)自己给自己发送信号 头文件: #include <signal.h> 函数原型: int raise(int sig); 参数: sig: 要发送的信号 具体应用实例: [改变信号的响应动作与发送信号的应用实例\[signal()/kill()\]][signal_kill] //–//–待更–//–// [Link 1]: http://note.youdao.com/noteshare?id=1370b0e8f4a16b80e7dede7836df3c08 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc5MzE4MQ_size_16_color_FFFFFF_t_70]: /images/20221124/94a67e3d34474a738b3d291452e3e4f7.png [signal_kill]: https://blog.csdn.net/weixin_43793181/article/details/107854136
还没有评论,来说两句吧...