Linux学习笔记(11)-kill函数

  明天开始学习kill函数的用法。

——————————————————————————————————————————————

  kill函数可以用来向指定的进程发送一个指定的信号,在我的理解的来看,就是人为的创造一个中断。

  该函数原形:int kill(pid_t pid,int sig);

  其中pid为进程ID,sig为发送的信号。

  这个函数超级简单,现在做个试验,首先创建一个父进程和子进程,然后父进程向子进程发送一个SIGINT信号,子进程给出一个回应。

  

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<errno.h>
#include<string.h>
#include<signal.h>

void handler(int sig)
{
    printf("获取到Ctrl+c信号!
");

    exit(0);
}

int main(void)
{
    int pid;

    pid = fork();
    if(pid < 0)
    {
        printf("进程创建出错:%d.
",errno);
        exit(0);
    }
    else if(pid == 0)
    {
        printf("子进程创建成功,进程ID为:%d.
",getpid());
        signal(SIGINT,handler);
        while(1)
        {
            sleep(1);
            printf("通过!
");
        }
    }
    else
    {
        printf("这是父进程,进程ID为:%d.",getpid());
        sleep(5);
        kill(pid,SIGINT);
        wait(NULL);
        printf("父进程退出!
");
    }

    return 0;
}

  首先创建一个子进程,改变当它收到SIGINT信号之后的处理,然后让他进入休眠,5秒后,父进程发送SIGINT信号……如果子进程收到信号,将会执行中断服务函数。

  代码结果执行如下:

  成功执行!

原文地址:https://www.cnblogs.com/han-bing/p/6087420.html