• Linux signal


    #include <stdio.h>
    #include <stdlib.h>
    #include <signal.h>
    #include <unistd.h>
    #include <sys/wait.h>
    
    void handler(int signo)
    {
        switch(signo) {
        case SIGUSR1: //处理信号 SIGUSR1
            printf("Parent : catch SIGUSR1\n");
        case SIGUSR2: //处理信号 SIGUSR2
            printf("Child : catch SIGUSR2\n");
        default:      //本例不支持
            printf("Should not be here\n");
            break;
        }
    }
    
    int main(void)
    {
        pid_t ppid, cpid;
        //为两个信号设置信号处理函数
        if(signal(SIGUSR1, handler) == SIG_ERR) { //设置出错
            perror("Can't set handler for SIGUSR1");
            exit(1);
        }
    
        if(signal(SIGUSR2, handler) == SIG_ERR) { //设置出错
            perror("Can't set handler for SIGUSR2");
            exit(1);
        }
    
        ppid = getpid();//得到父进程ID
    
        if((cpid = fork()) < 0) {
            perror("fail to fork");
            exit(1);
        } else if(cpid == 0) { //子进程
            if(kill(ppid, SIGUSR1) == -1) {
                perror("fail to send signal");
                exit(1);
            }
    
            while(1);//死循环,等待父进程的信号
        } else {
            sleep(1);//休眠,保证子进程先运行,并且发送SIGUSR1信号
    
            if(kill(ppid, SIGUSR2) == -1) {
                perror("fail to send signal");
                exit(1);
            }
    
            printf("kill child\n");//输出提示
    
            if(kill(ppid, SIGKILL) == -1) { //发送SIGKILL信号,杀死子进程
                perror("fail to send signal");
                exit(1);
            }
    
            if(wait(NULL) ==-1) { //回收子进程状态,避免僵尸进程
                perror("fail to wait");
                exit(1);
            }
        }
    
        return;
    }
    
    //-----------------------------------------------------------------------------------------------------
  • 相关阅读:
    cmd设置代理
    移动端坐标定位tap
    T02-Django基本应用结构
    支持向量机算法的Sklearn完整复现
    T01-何为Django,入门"Hello World"
    决策树算法的Sklearn完整复现
    逻辑回归算法的Sklearn完整复现
    线性回归算法Sklearn完整复现
    K-近邻算法的Sklearn完整复现
    数据分析中的'疑难杂症'小结(三)
  • 原文地址:https://www.cnblogs.com/xuejianhui/p/2780269.html
Copyright © 2020-2023  润新知