信号
在Linux系统中,信号(signal)是一种事件通知的进程通讯方式。
信号处理流程
1.进程A选择信号
2.进程A发送信号给进程B
3.进程B接收信号
信号类型
Linux系统支持的所有信号都定义在/usr/include/asm/signal.h中,其中常见的信号有:
SIGKILL:杀死进程
SIGSTOP:暂停进程
SIGCHLD:子进程停止或结束时用来通知父进程
通过kill命令可以给进程发送信号
例如:kill -n SIGINT PID
A.c
#include <sys/types.h> #include <signal.h> int main(int argc, char **argv){ //参数检查 if(argc != 2){ return -1; } //参数转换 int pid; pid = atoi(argv[1]); //发送信号 kill(pid, SIGINT); return 0; }
B.c
#include <stdio.h> #include <signal.h> #include <unistd.h> void print(int arg); void main(){ //设置信号 signal(SIGINT, print); //等待信号 pause(); } void print(int arg){ printf("Process B recevied SIGINT! "); }