Ich habe eine einfache Rohr Programm, das untergeordnete Prozesse erstellt, um einige Informationen zu schreiben und der übergeordnete Prozess wird diese Informationen angezeigt.Finden Sie die Anzahl der Prozesse
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;
}
In dieser Situation erhält der Parent-Prozess folgende Ergebnisse: 0 ,1 and 2
.
Wenn ich die Zeile löschen, die exit(0)
enthält, wie kann ich herausfinden, wie viele Prozesse das Programm erstellt hat?
Vielen Dank im Voraus.
Die Anzahl der erstellten Prozesse entspricht der Anzahl der Aufrufe von 'fork()'. Wenn Sie die 'exit (0)' -Aufrufe löschen, versuchen die Kinder, die Schleife ('fork()' wieder zu durchlaufen) und dann warten sie (0) '. Sie erhalten aus einigen ihrer 'wait()' '' ECHILD''. Ist das wirklich was du vorhast oder meinst du etwas anderes? –
Ihre Frage ist sehr unklar. – Stargateur