signal函数的使用
signal函数
#include
typedef void(*sighandler_t)(int);
sighandler_t signal(int signum,sighandler_t handler);
功能:
注册信号处理函数(不可用于SIGKILL、SIGSTOP信号),即确定收到信号后处理函数的入口地址。
参数:
signum:信号编号
handler的取值:
忽略该信号:SIG_IGN
执行系统默认动作:SIG_DFL
自定义信号处理函数:信号处理函数名
返回值:
成功:返回函数地址,改地址为此信号上一次注册的信号处理函数的地址。
失败:返回SIG_ERR
使用忽略(SIG_IGN)该信号的方法来用signal这个函数的代码是:
代码:
#include
#include
#include
#include
int main()
{if(signal(SIGINT,SIG_IGN) == SIG_ERR){perror("fail to signal");exit(1);}if(signal(SIGINT,SIG_IGN) == SIG_ERR){perror("fail to signal");exit(1);}if(signal(SIGINT,SIG_IGN) == SIG_ERR){perror("fail to signal");exit(1);}while(1){printf("hello world\n");sleep(1);}return 0;}
运行结果:

注意: 在参数handler使用SIG_IGN值时,该信号的意思是忽略你键盘输入的信号,此时再按Ctrl+c就不会结束进程了,此时需要再打开一个终端端口
先用 ps ajx 来查看当前进程的pid


当找到该进程的pid后为3785,在使用kill命令来结束该进程
kill -9 3785


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
