linux 信号

  • 当进程接收到一个信号时,就会执行相应的信号函数,如果又接收到相同的信号函,则会存储下来,执行信号的函数不会被打断,直到上一个信号函数退出,才会执行信号函数;如果重复连续接收相同的信号,则只会处理一次,同种信号是不会积累的。但接收的不是同种信号A,则上一个信号函数执行过程中会被打断,直到A信号函数处理完,才继续运行上一个信号
  • 信号函数
    signal(int sig, __sighandler handler);
    sig:信号,常用信号有
    SIGINT:crtl+c,用户按中断键。
    SIGHUP:当终止一个终端时,内核就把这一种信号发送给该终端所控制的所有进程或一个进程组,进程组终止时,向所有进程发送这种信号。
    SIGTERM:终止一个普通的进程。
    SIGCHLD:子进程结束信号,当子进程结束时,向父进程发送该信号,如果父进程调用wati()函数时,父进程就被唤醒;如果父进程没有调用wait()或父进程退出,子进程会成为孤儿进程,由init进程对子进程进行资源回收。
    SIGALRM:定时器信号。一般有alarm(int second)来发送一个定时信号。比如60s,程序执行到alarm函数时,程序会继续运行,但60s时,程序会被中断,并发处理定时信号,处理完后,程序继续在中断时执行。(所谓的异步处理)

  • 第二个参数
    SIG_IGN:当接收到sig的信号时,该信号会被忽略,程序不会被中断,继续执行,除了SIGKILL不能被忽略。
    SIG_DEF:重新恢复系统对信号的默认处理。
    也可以将信号与函数进行关联,当接收到sig信号后,就会执行关联函数。函数退出后,程序继续执行(除非关联函数退出当前进程)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值