进程间的信号传递

可以使用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){
       
    }
}

 

posted @ 2025-06-08 17:52  记得要好好吃饭  阅读(9)  评论(0)    收藏  举报