이 글에서는 시스템이 감당할 수 있는 좀비 프로세스(Zombie Process)의 최대 개수를 찾는 방법을 다룹니다. 즉, 프로그램이 더 이상 실행되지 않고 멈추기 직전까지 몇 개의 좀비 프로세스를 생성할 수 있는지 확인하는 것이 목표입니다.
좀비 프로세스란?
좀비 프로세스(흔히 defunct process라고도 불림)는 exit() 시스템 콜을 통해 이미 실행을 마친 프로세스임에도 불구하고, 여전히 프로세스 테이블에 항목이 남아 있는 상태의 프로세스를 의미합니다. 부모 프로세스가 자식 프로세스의 종료 상태를 wait()나 waitpid()로 회수하지 않으면 자식은 종료되었음에도 좀비 상태로 남게 됩니다.
프로그램의 접근 방식
- 프로그램을 실행하려면
<unistd.h>헤더 파일을 반드시 포함해야 합니다. main()함수 안에서 int형 변수num을 0으로 초기화하고, 프로그램이 멈출 때까지 이 값을 반복적으로 증가시킵니다.- 좀비 프로세스를 만들기 위해 조건이
while(fork() > 0)인 while 문을 사용합니다.fork()시스템 콜은 새로운 프로세스, 즉 자식 프로세스를 생성하며, 자식 프로세스는fork()를 호출한 부모 프로세스와 동시에(concurrently) 실행됩니다. - while 루프 내부에서는
num을 1씩 증가시키고 그 값을 화면에 출력합니다.
예제 코드
#include<iostream>
#include<unistd.h>
using namespace std;
int main(){
int num = 0;
while (fork() > 0){
num++;
cout<<num<<" ";
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

위 출력 결과에서 num은 93에서 더 이상 증가하지 않고 멈춥니다. 하지만 이 숫자는 고정된 값이 아니며, 시스템의 설정에 따라 달라질 수 있습니다. 실제 최대값은 커널의 PID 최대값(/proc/sys/kernel/pid_max)이나 프로세스 테이블 크기 등 시스템 리소스 제한에 의해 결정되기 때문입니다.