1
私は単純なパイプいくつかの情報を書き込むために子プロセスを作成するプログラムがあり、親プロセスはこの情報を表示します。プロセスの数を確認する
int main() {
int pfd[2], i, n;
pipe(pfd);
for(i=0; i<3; i++) {
if(fork() == 0) {
write(pfd[1], &i, sizeof(int));
close(pfd[0]); close(pfd[1]);
exit(0);
}
else {
}
}
for(i=0; i<3; i++) {
wait(0);
read(pfd[0], &n, sizeof(int));
printf("%d\n", n);
}
close(pfd[0]); close(pfd[1]);
return 0;
}
この状況では、親プロセスには次の結果が表示されます。0 ,1 and 2
。
exit(0)
が含まれている行を削除すると、プログラムで作成されたプロセスの数はどのようにわかりますか?
ありがとうございます。
作成されるプロセスの数は、 'fork()'の呼び出し回数に等しいです。 'exit(0)'呼び出しを削除すると、子プロセスはループを継続しようとします( 'fork()')し、 'wait(0)'します。彼らは 'wait()'の中から 'ECHILD'を得るでしょう。これは本当にあなたが意図するものなのでしょうか、それとも別のことを意味していますか? –
あなたの質問は非常に不明です。 – Stargateur