linux下信号的生成

在linux下,我们会经常碰到信号这个名词。其实,信号时操作系统向进程发送的软件通知,通知进程某种事件发生了。当事件发生时,信号就被生成了,当进程根据信号采取行动时,信号就被传递了,信号的寿命就是生成与传递之间的时间间隔,这个时间可长可短。

在linux下面,信号的生成可以分为俩中情况:1.在命令解释器中如何生成。2.在程序中如何生成

在解释器中如何生成

在解释器中,我们使用kill命令来产生信号,kill命令使用方法如下:

  1. kill [-signal_name | -s signal_name] pid...
  2. kill [-L | -V, --version]
  3. kill -l [signal_name]
  4. kill [-signal_number] pid...

如上,kill有三种格式。默认情况下,kill发送的信号时TERM。使用 -l 或者 -L可以列出当前系统中可用的信号。当pid的值大于0时,kill就向ID标识的进程发送信号;当pid的值为0时,kill就向当前进程组成员发送信号;若pid为-1,就向所有有权发送信息的进程发送信号;若pid为其他负数,则向组id等于|pid|的进程组发送。

在程序中如何生成

在程序中我们有如下集中方式生成信号

  1. int kil(pid_t pid, int sig)
  2. int raise(int sig)
  3. unsigned alarm(unsigned seconds)

KILL函数

这是一个系统调用,调用其可以给指定的pid发送信号sig,pid的使用规则与如上的kill命令相同。用户只能向其拥有的进程发送信号,kill通过比较调用进程和目标进程的真实或者有效用户ID确定是否有权发送,但是SIGCONT是个例外,该信号只要求俩进程处于同一会话即可。

RAISE函数

该函数只能向调用这自己发送信号,所以它只有一个参数,即信号码

ALARM函数

该函数会经过特定的秒数后向调用进程发送信号SIGALRM

对于linux中信号的产生方式,目前只知道这么多,做个总结。

猜你喜欢

转载自blog.csdn.net/fanxiaoyu321/article/details/23909361
今日推荐