系统api产生信号
kill函数
int kill(pid_t pid,int sig);
pid大于0,代表要发送的进程ID
pid=0,代表当前调用进程组内所有进程
pid=-1,代表有权限发送的所有进程
pid小于0,代表-pid对应组内所有进程
sig 对应的信号
killfather.c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
int main(int argc,char * argv[])
{
int i;
for(int i=0;i<5;i++)
pid_t pid=fork();
if(pid==0){
break;
}
}
if(i==2){
printf("I will kill father after 5s\n");
sleep(5);
kill(getppid(),SIGKILL);
while(1){
sleep(1);
}
else if(i==5){
while(1){
printf("I am father\n");
sleep(1);
}
}
return 0;
}
kill3.c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
int main(int argc,char * argv[])
{
int i;
pid_t pid3,pid;
for(int i=0;i<5;i++)
pid=fork();
if(pid==0){
break;
}
if(i==2){
pid3=pid;
}
}
if(i<5){
while(1){
printf("I am child,pid=%d,ppid=%d\n",getpid(),getppid());
sleep(1);
}
else if(i==5){
printf("I am father,pid=%d,I will kill xiao3 pid3=%d\n",getpid(),pid3);
sleep(5);
while(1){
sleep(1)
}
}
return 0;
}