bashスクリプトで生成した子プロセスがゾンビ状態にならない理由を教えてください

以下のbashスクリプトとC言語プログラムは、子プロセスがゾンビ状態になるのを確認したく作成したものです。しかし、bashスクリプトの方は、ゾンビ状態になりません。C言語プログラムを模倣してbashスクリプトを作ったつもりです。なぜ、bashスクリプトの方は、子プロセスがゾンビ状態にならないのでしょうか?

なお、ゾンビ状態の確認方法は、プログラム実行後にps lを実行して、<defunct>が表示されるか否かで判断しています。

bash

1#!/bin/bash2sleep 1 &3pid=$!4sleep 305wait $pid 6echo "return code=$?"7exit 0

c

1#include <stdio.h>2#include <stdlib.h>3#include <sys/types.h>4#include <sys/wait.h>5#include <unistd.h>6 7int main(){8 int i;9 if(fork()==0){10 if (execl("/bin/sleep","/bin/sleep","1",NULL)<0){11 exit(EXIT_FAILURE);12 }13 }14 else{15 sleep(30);16 wait(&i);17 printf("return code=%d\n",WEXITSTATUS(i));18 }19 return EXIT_SUCCESS;20}

コメントを投稿

0 コメント