【Linux】kill、raise、abort函数

橙色

1、kill、raise、abort函数

/*  
    #include <sys/types.h>
    #include <signal.h>

    int kill(pid_t pid, int sig);
        - 功能:给任何的进程或者进程组pid, 发送任何的信号 sig
        - 参数:
            - pid :
                > 0 : 将信号发送给指定的进程
                = 0 : 将信号发送给当前的进程组
                = -1 : 将信号发送给每一个有权限接收这个信号的进程
                < -1 : 这个pid=某个进程组的ID(12345)取反 (-12345),表示要给序号为12345的进程组发送信号
            - sig : 需要发送的信号的编号或者是宏值,0表示不发送任何信号

        kill(getppid(), 9);//杀死当前进程的父进程
        kill(getpid(), 9); //杀死当前进程
        
    int raise(int sig);
        - 功能:给当前进程发送信号
        - 参数:
            - sig : 要发送的信号
        - 返回值:
            - 成功 0
            - 失败 非0
         

    void abort(void);
        - 功能: 发送SIGABRT信号给当前的进程,杀死当前进程
        
*/

2、代码示例

#include <stdio.h>
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>

int main() {
    
    

    pid_t pid = fork();

    if(pid == 0) {
    
    
        // 子进程
        int i = 0;
        for(i = 0; i < 5; i++) {
    
    
            printf("child process\n");
            sleep(1);
        }

    } else if(pid > 0) {
    
    
        // 父进程
        printf("parent process\n");
        sleep(2);
        printf("kill child process now\n");
        kill(pid, SIGINT);
    }

    return 0;
}

结果如下:
在这里插入图片描述

child process可能打印两次,也可能打印三次

猜你喜欢

转载自blog.csdn.net/mhyasadj/article/details/130760569
今日推荐