信号是进程间通信的方式之一,进程之间通过发送和接收不同的值来通信,这些不同的值被标示为各种信号。
我们使用kill指令杀死一个进程,本质上是kill这个程序给对应的进程发送了一个进程终止的信号SIGTERM。通过kill -l可以查看系统默认的信号。
1、接收信号:
1 //main.c 2 #include <stdio.h> 3 #include <signal.h> 4 5 int end = 0; 6 7 static void sig_handle(int signo) 8 { 9 switch(signo) 10 { 11 case SIGTERM: 12 printf("收到信号SIGTERM, value = %d\n", signo); 13 break; 14 15 default: 16 printf("收到其他信号,value=%d\n", signo); 17 break; 18 } 19 end = 1; 20 return; 21 } 22 23 int main(int argc, char **argv) 24 { 25 sighandler_t ret; 26 ret = signal(SIGTERM, sig_handle); 27 if(SIG_ERR==ret) 28 { 29 printf("为SIGTERM挂接信号处理函数失败\n"); 30 return -1; 31 } 32 printf("开始监听信号...\n"); 33 while(1) 34 { 35 if(1==end) 36 return 0; 37 } 38 }
2、编译
gcc -D_GNU_SOURCE main.c
3、测试
执行./a.out,并另启终端执行pkill -15 a.out;
可以看到进程收到信号并打印:收到信号SIGTERM, value = 15
标签:printf,signo,int,编程,间通信,信号,linux,进程,SIGTERM From: https://www.cnblogs.com/zzx2bky/p/16991792.html