Linux多进程13-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)
        -sig: 需要发送的信号的编号或者是宏值, 0表示不发送任何信号
    kill(getppid(), 9);
    kill(getpid(), 9);

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

kill.c

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

int main(int argc, char const *argv[])
{
    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;
}

运行

$./kill
parent process
child process
child process
kill child process now
posted @ 2023-05-17 18:40  言叶以上  阅读(70)  评论(0编辑  收藏  举报