Fork me on GitHub

kill和raise

kill和raise

kill函数将信号发送给进程或进程组。raise函数则允许进程向自身发送信号。

1
2
3
4
#include <signal.h>
int kill(pid_t pid,int signo);
int raise(int signo);
//若成功,返回0;若出错,返回-1

调用

1
2
3
raise(signo);
//等价于调用
kill(getpid(),signo);

kill的pid参数有以下4中不同的情况。

  • pid>0 将该信号发送给进程ID为pid的进程。
  • pid == 0 将该信号发送给与发送进程属于同一进程组的所有进程。
  • pid < 0 将该信号发送给其他进程组ID等于pid绝对值,而且发送进程具有权限向其发送信号的所有进程。
  • pid == -1 该信号发送给发送进程有权限向它们发送信号的所有进程。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "head.h"
static void sig_usr1(int);
int main(void){
if(signal(SIG_USR1,sig_usr1) == SIG_ERR){
printf("signal error\n");
}
kill(getpid(),SIG_USR1);
printf("send a SIG_USR1\n");
exit(0);
}
static void sig_usr1(int signo){
printf("received a %d signal\n");
}
1
2
3
[vrlive@iZ23chs2r19Z ten]$ ./kill.o
received a 897804016 signal
send a SIGUSR1
-------------本文结束感谢您的阅读-------------

本文地址:http://www.wangxinri.cn/2018/05/17/函数kill和raise/
转载请注明出处,谢谢!

梦想夹带眼泪,咸咸的汗水!