signal函数的使用

signal函数

#include<signal.h>
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<stdio.h>
#include<unistd.h>
#include<signal.h>
#include<stdlib.h>
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
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值