Linux 之 信号
Posted _NiuLi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 之 信号相关的知识,希望对你有一定的参考价值。
一、信号的产生
Linux下信号的产生可分为一以下三种方式:
1、通过终端按键产生
当我们编写一个死循环的代码,执行代码时进程无法终止时,这时可以通过按键<C-c> 或者<C-z>来终止进程。<C-c>会产生一个SIGINT信号,<C-z>会产生一个SIGTSTP信号,这两个信号都会使前台进程终止。
2、调用系统函数向进程发信号
#include <sys/types.h> #include <signal.h> int kill(pid_t pid,int sig); void raise(int signo);
上面的三个函数可以向进程发送信号,kill(pid_t, int)可以给指定进程发送指定信号,raise(int) 可以向当前进程发送指定信号,abort() 会使当前进程收到异常而终止。代码如下:当输出六次pid is xxx 后进程会收到信号而终止。
或者可将kill(getpid(), SIGINT)替换为 raise(SIGINT)
运行结果如下:
3、由软件条件产生
比如alarm()函数和SIGALRM信号。alarm()的函数原型如下:
alarm函数可以设定一个闹钟,当时间到时,系统会向当前进程发送一个SIGALRM信号,该信号的默认处理动作时终止该进程。
#include <unistd.h> unsigned int alarm(unsigned int second);
二、信号的
执行上面的代码,进程会在1s收到SIGALRM信号而终止。
以上是关于Linux 之 信号的主要内容,如果未能解决你的问题,请参考以下文章