系统可以处理的最大僵尸进程数
Zombie Process或Defunct Process是那些已通过 exit() 系统调用完成执行但在Process Table 中仍有条目的进程。它是一个处于终止状态的进程。
当在 UNIX 中使用fork()系统调用创建子进程时,如果不知何故父进程无法从进程表中获取子进程,则会出现这种情况。基本上, Zombie Process既不是完全死也不是完全活着,但它介于两者之间。
因为,在process table 中有所有 process的条目,即使对于Zombie Processes 也是如此。很明显,进程表的大小是有限的。因此,如果大量创建僵尸进程,那么进程表将被填满,程序将在没有完成任务的情况下停止。
在这里,我们的任务是找出创建的僵尸进程的最大数量,以便程序不会停止其执行。解决这个问题的方法是在一个循环中创建一个僵尸进程并对其进行计数,直到程序不停止执行为止。
以下是上述想法的C 实现:
// C program to find number of Zombie processes a
// system can handle.
#include
#include
int main()
{
int count = 0;
while (fork() > 0)
{
count++;
printf("%d\t", count);
}
}
输出:
在图像中,我们可以看到11834之后,计数的增量停止。然而,这不是一个固定的数字,但它会出现。
此外,这将取决于系统配置和强度。