进程间的信号传递
可以使用kill -l 命令查看所有的信号
ps -ef或ps aux 来查看正在运行的进程
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
/*************************************************
* filename:process_signal1.c
* function:持续发送信号给一个进程
* date:2025.6.8
* note:进程号PID需要先运行process_signal2.c后获取填入再运行此程序
*
* CopyRight (c) 2024-2025 l550036303@163.com All right reserved
************************************************/
void main(){
while(1){
kill(5070,SIGUSR1);
//暂停两秒
sleep(2);
}
}
#include <stdio.h>
#include <signal.h>
/*************************************************
* filename:process_signal2.c
* function:接收发送来的信号,并做自定义处理
* date:2025.6.8
* note:进程号PID需要先运行process_signal2.c后获取填入process_signal1.c
*
* CopyRight (c) 2024-2025 l550036303@163.com All right reserved
************************************************/
void getsign_print(int signum){
switch(signum){
case SIGUSR1:
printf("i am signaltwo,accept this signal\n");
printf("signalnumber=%d\n",signum);
break;
case SIGUSR2:
printf("i am signaltwo,accept this signal\n");
printf("signalnumber=%d\n",signum);
break;
}
}
void main(){
signal(SIGUSR1,getsign_print);
signal(SIGUSR2,getsign_print);
signal(SIGINT,SIG_IGN); //忽略ctrl+c
while(1){
}
}

浙公网安备 33010602011771号