linux系统模拟写一个僵尸进程
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
// 僵尸进程:子进程结束了,父进程没有回收其资源
int main(void)
{
int i = 0;
pid_t pid = -1;
// 创建一个子进程
pid = fork();
if ( -1 == pid){
perror("fork");
return 1;
}
// 子进程
if (0 == pid){
for (i = 0; i < 5;i++){
printf("子进程做事 %d\n", i);
sleep(1);
}
printf("子进程想不开了,结束了自己...\n");
// 子进程退出
exit(0);
}
// 父进程在睡觉,阻止进程结束,也可以使用sleep(100)
getchar();
}
gcc zoom.c 编译代码文件,执行./a.out文件:
ps aux | grep z 查看僵尸进程,并没有找到:
ps aux | grep a.out 就可以查看僵尸进程,Z代表僵尸进程,的S+表示父进程在睡觉。killall a.out就找不到僵尸进程了。