一、kill()
kill(pid3,SIGKILL); //SIGKILL最为常用。
用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略。如果管理员发现某个进程终止不了,可尝试发送这个信号。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
main(int argc, char const *argv[])
{
int i =0;
pid_t pid3,pid;
for(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(3);
}
}
else if(i ==5){
printf("I am parent ,pid =%d,I will kill xiaosan pid3=%d\n",getpid(),pid3);
sleep(5);
//在这里我们利用父进程将第三个子进程杀死。
kill(pid3,SIGKILL);
while(1){
sleep(1);
}
}
return 0;
}
二、进程自杀
1、kill(getpid(),sig)自杀
2、raise(SIGKILL);
3、abort();
#include <stdio.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
main(int argc, char const *argv[])
{
printf("I will die!\n");
//sleep函数属于unist库
sleep(2);
//kill(getpid(),sig)自杀
//raise(SIGKILL);
//直接放弃
abort();
return 0;
}