明天开始学习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信号……如果子进程收到信号,将会执行中断服务函数。
代码结果执行如下:
成功执行!