Linux下的孤儿进程与僵尸进程

孤儿进程:父进程死了,子进程被init进程领养。
僵尸进程:子进程死了,父进程没有回收子进程资源(PCB)。
孤儿进程例子:orphan.c

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(void)
{
  pid_t pid = fork();
  if(pid == 0)
  {
	while(1)
	{
		printf("I am child,pid = %d,ppid = %d\n",getpid(),getppid());
		sleep(1);
	}
	
  }
  else if(pid > 0)
  {
	printf("I am parent,pid = %d,ppid = %d\n",getpid(),getppid());
	sleep(3);
	printf("I will die\n");  //提示父进程将要死亡
  }
  return 0;
	
}

用命令:gcc -o orphan orphan.c 编译
运行图片:
在这里插入图片描述
可以看出,在父进程死亡后,子进程ppid发生了变化。
僵尸进程例子:

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(void)
{
  pid_t pid = fork();
  if(pid == 0)
  {
	
		printf("I am child,pid = %d,ppid = %d\n",getpid(),getppid());
		sleep(3);
		printf("I will die\n");
	
	
  }
  else if(pid > 0)
  {
	while(1)
	{
		printf("I am parent,pid = %d,ppid = %d\n",getpid(),getppid());
		sleep(1);
	
	
	}
	
  }
  return 0;
	
}

用命令:gcc -o zomble zomble.c 编译
运行图片:
在这里插入图片描述
打开另一个终端窗口,查看这个程序
在这里插入图片描述
其中第二行中:Z+代表这是一个僵尸进程。

发布了20 篇原创文章 · 获赞 4 · 访问量 4665

猜你喜欢

转载自blog.csdn.net/qq_42884482/article/details/99712499