信号及信号处理笔记

在终端输入kill -1可以列出Linux中的所有信号。信号处理信号最为进程间通信的机制,主要用于异步事件。有3种基本处理信号的方法:默认。系统为每一个信号都设置了默认的处理方式,通常为终止进程。 捕捉信,使进程执行指定的程序 忽略信号,不处理,进程继续执行。产生信号捕捉信号信号阻塞信号处理安全问题...
摘要由CSDN通过智能技术生成

在终端输入kill -1可以列出Linux中的所有信号。

信号处理

信号最为进程间通信的机制,主要用于异步事件。

有3种基本处理信号的方法:

  • 默认。系统为每一个信号都设置了默认的处理方式,通常为终止进程。
  • 捕捉信,使进程执行指定的程序
  • 忽略信号,不处理,进程继续执行。

产生信号

信号的产生主要有以下几种

  1. 通过键盘终端产生
  2. 通过终端中的kill命令产生
    kill -信号类型 进程号
    进程号通过ps -aus命令获取

     

  3. 调用系统函数向进程发送

kill()函数

kill()函数主要用于向指定的进程或进程组发送线信号

#include<sys/types.h>
#include<signal.h>
int kill(pid_t pid,int sig);

pid:进程号或进程组号

sig:发送信号类型的编号

pid=0:将信号发送到当前进程所在的进程组的每一个进程

pid=-1:将信号发送给除了init进程外的当前进程中有权发送的所有进程

pid<-1:将信号发送给进程组(-pid)中的每一个进程

如果参数sig为0,没有信号发送,但会进行错误检查

raise()函数

用于将信号发送给当前进程

#include<signal.h>
int raise(int sig);

sig:发送的信号类型的编号

函数调用成功,返回0;失败返回非0

alarm()函数

 用于为发送的信号设定一个时间警告,使系统在设定的时间之后发送信号

#include<unistd.h>
unsigned int alarm(unsigned int seconds);

second:为设定的时间值。如果为0,警告时钟将无效。

alerm()函数安排在seconds时间后,发送一个信号SIGNALRM给进程。默认情况下,进程接收到SIGALRM信号会终止进程,如果不希望终止进程,可以在进程捕获到该信号后修改默认的处理函数。

调用alarm()函数后,之前设置的的任何警告时钟都会被取消。 

捕捉信号

signal()函数

用于修改某个信号的处理方法

#include<signal.h
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值