
一.信号快速认识




二.信号的产生
1.键盘产生




那么,我们怎么结束我们的命令行呢?
方式一.

方式二.


ctrl + c只能杀掉前台进程,没法杀死后台进程
![]()
2.signal接收信号


这个signal方法,能够修改我们对应的信号所对应的方法
我们只看1-31号信号(普通信号),32-64号为实时信号
a.SIGINT信号
ctrl + c表示的是2号信号(SIGINT)

#include <iostream>
#include <unistd.h>
#include <signal.h>
void Handler(int signo)
{
//当对应的信号被触发,内核会将对应的信号进行编号,传递给自定义方法
std::cout << "Get a signal,signal number is : " << signo << std::endl;
}
int main()
{
signal(SIGINT,Handler);//默认终止 -> 执行自定义方法: Handler
while(true)
{
std::cout << "hello world" << std::endl;
sleep(1);
}
return 0;
}


ctrl + \也能终止进程

所以,我们就知道了,对于我们的信号有默认的处理方式,并且我们还可以设置相关的信号处理方式
对于默认的处理方式,我们可以使用man 7 signal进行查看

b.SIGQUIT信号(ctrl + \)
#include <iostream>
#include <unistd.h>
#include <signal.h>
void Handler(int signo)
{
//当对应的信号被触发,内核会将对应的信号进行编号,传递给自定义方法
std::cout << "Get a signal,signal number is : " << signo << std::endl;
}
int main()
{
signal(SIGQUIT,Handler);//默认终止 -> 执行自定义方法: Handler
while(true)
{
std::cout << "hello world" << std::endl;
sleep(1);
}
return 0;
}





最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



