(子) プロセスのゾンビ状態を表示する必要がある fork()、exec() および関連する UNIX 呼び出しで割り当てを行っています。関連するコードは次のとおりです。
pid = vfork(); //used vfork() for showing z state
if(pid>0)
{
(some sorting code)
execl("/bin/ps","/bin/ps","a",(char*)0);
}
私が期待するものは次のとおりです。
(child's output)
(parent's output)
(Output of the ps command where I then would be able to show a 'defunct' entry)
私が得るものは次のとおりです。
(child's output)
(parent's output)
No ps command output. Instead I get: Signal 17 (CHLD) caught by ps (procps version 3.2.8)
ただし、呼び出しsleep(int time)
の前に (秒単位の整数時間) が挿入されるexecl
と、目的の出力が得られ、Signal エラーは報告されません。
ここで何が起こっているのですか?ps
(まだゾンビの)子供の新しい親になりますか?ps
また、コマンドが実行されないのはなぜですか? 必要に応じて実行するには何が必要ですsleep()
か?ps
私は POSIX/Linux プログラミングが初めてなのでSIGCHLD
、私の特定の状況に関するこのシグナルの関連性を評価していただければ幸いです。ありがとう!