案例要求
循环创建指定个数子进程,并且杀死指定的子进程(利用命令行参数实现
)
代码实现
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
//创建指定个数的子进程,并且指定杀死相关的子进程
//int main(int argc,char *argv[]){
int main(int argc,char *argv[]){
//判断输入
if(argc < 3){
printf("./a.out chile_num kill_num\n");
exit(1);
}
int i;
pid_t pid;
//创建的子进程个数
int num = atoi(argv[1]);
//杀死的子进程
int kill_num = atoi(argv[2]);
int k;
for(i = 0; i < num;i++){
pid = fork();
if( pid == -1){
perror("fork");
}
//子进程退出
else if( pid == 0){
break;
}
//得到要杀死的子进程的pid
else if( i+1 == kill_num ){
k=pid;
}
}
while(1){
//子进程输出
if(i < num){
printf("i am %d child my pid is %d\n",i+1,getpid());
sleep(1);
}
//父进程输出
else {
kill(k,SIGKILL);
}
}
return 0;
}