【发布时间】:2017-05-26 06:44:03
【问题描述】:
我有一个使用 fork 和 execlp 执行另一个进程(bash 脚本)的 c 程序。当我想杀死这个进程时,它会进入僵尸状态。这是为什么呢??
创建一个进程:
switch (PID_BackUp= fork())
{
case -1:
perror("fork");
printf("An error has occurred launching backup.sh script!\n");
break;
case 0:
execlp("/usr/local/bin/backup.sh", "/usr/local/bin/backup.sh", NULL, NULL, NULL);
break;
default:
printf("backup.sh script launched correctly! PID: %d\n", PID_BackUp);
break;
}
杀死一个进程:
if(kill(PID_BackUp,SIGKILL)==-1)
fprintf(stderr, "No se ha podido matar el programa: %d\n", PID_BackUp);
else
printf("\nProceso con identificador %d, se ha abortado\n", PID_BackUp);
所以此时进程进入僵尸状态。我做错了什么?
【问题讨论】:
标签: linux fork kill zombie-process