좀비의 생성조건은??
글쓴이: 익명 사용자 / 작성시간: 토, 2002/02/23 - 7:21오후
책에 fork로 자식프로세스 생성한후 부모프로세스가 wait를 하지 않으면 좀비가 생성된다
고 나와있는데.. (부모프로세스가 나중에 죽을경우)
직접해보니 wait를 하지 않아도 좀비가 생성되지 않네요.
아래와 같은경우 자식이 죽고 부모가 wait하지 않고 그냥 끝냈는데 좀비가 생기지 않는 이
유는 무엇때문이죠?
---
static void charatatime(char *);
int main(void) {
pid_t pid;
int ret;
if((pid = fork()) < 0)
fprintf(stderr, "fork error\n");
else if(pid == 0) {
charatatime("output from child\n");
} else {
sleep(3);
charatatime("output from parent\n");
}
exit(0);
}
static void charatatime(char *str) {
char *ptr;
int c;
setbuf(stdout, NULL);
for(ptr = str; c = *ptr++; )
putc(c, stdout);
}
Forums:
Re: 좀비의 생성조건은??
적어도 여러가지 방향에서 프로세스가 죽는 것을
생각해 보셔야 할 겁니다.
실제 부모가 먼저 죽은경우.
자식이 죽고 부모가 살아있는 경우
자식이 죽고 부모도 죽은 경우
등등..
책에도 자세히 있을 것 같네요.
자식 프로세스가 죽기 때문이 아닐까요?
추정입니다만, 부모 프로세서가 3초를 기다려주니까, 자식이 실행되고
먼저 종료된 다음에, 부모가 종료되니까 별 문제가 안 생기는
것처럼 느껴지는게 아닐까 합니다.
만약에 자식 프로세스에서 매우 긴 실행시간(여기라면 한 15초정도?)을
가진 함수를 호출한다면, 좀비가 생기지 않을까 합니다.
댓글 달기