Ich habe dieses kleine Programm:Wie kann ich 'fork()' ed Kinder teilen stdin machen?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
int orig = 1;
for (int i = 0; (i != 3) && orig; ++i) {
orig = orig && fork();
}
if (orig) {
for (int i = 0; i != 3; ++i) {
wait(NULL);
}
} else {
int num;
scanf("%d", &num);
printf("%d\n", num*num);
}
}
Welche Platz drei Zahlen einfach angenommen wird, dass es von stdin
liest, aber es nicht wie erwartet funktionieren. Insbesondere sieht es aus wie eines der Kinder „Schweine“, die alle der cat
ted Eingang, da das Programm funktioniert in etwa so:
2
2
2
zu
4
0
0
Ich glaube, ich brauche dup
zu verwenden, um zu beheben das, aber es gibt fast nichts in unseren Kursmaterialien und alles, was ich im Internet finde, ist viel zu kompliziert für mich, um es zu verstehen. Wie genau kann ich alle Prozesse freigeben stdin
?
'dup()' wird nicht helfen. Sie mussten die Kinder synchronisieren und ganze Zeilen lesen ... viel einfacher zu lesen, vor dem Abzweigen. –
Das klingt nach einer sehr schlechten Idee, auch wenn es möglich ist. Wer würde ein Prozess wissen, dass die Eingabe für diesen Prozess gedacht ist? Verwenden Sie einen einzigen Prozess, um die Eingabe an jeden der Mitarbeiter zu senden! – Olaf
Umm .. du meinst wie 'Wie kann ich zwei Züge die gleiche Spur teilen'? – ThingyWotsit