Ich habe diesen Code, einen Code in Abhängigkeit davon, ob der aktive Prozess ist die Eltern oder das Kind Prozess in einer Endlosschleife ausführt:Warum funktioniert dieser Code mit fork()?
pid_t childPID;
childPID=fork();
while (1)
{
if (childPID >=0)
{
if (childPID==0)
{
[do child process stuff]
}
else
{
[do parent process stuff]
}
}
else
{
printf("\n Fork failed, quitting!!!!!\n");
return 1;
}
}
-Code ist einfach, aber es gibt eine sehr große Sache für mich auf sie die Ich verstehe nicht, wie es passiert, obwohl ich eine Vermutung habe:
Wenn wir nicht in Betracht ziehen, dass wir 2 Prozesse erstellen, sieht es so aus, als ob ChildPid ständig neu definiert wird, was ich nicht für sinnvoll halte.
Also meine Vermutung ist, dass Fork eine childPid für jeden Prozess erstellt, eine 0 an den übergeordneten Prozess und die PID an den Kindprozess zurück, obwohl diese Syntax mich denken, dass es nur ein Ergebnis zurückgeben und zuweisen sollte zu chilPid.
Ist meine Vermutung richtig oder gibt es noch etwas anderes?
Vielen Dank.
erstellt Wie 'do [tun Mutter Sachen] 'und' [tun Kind Zeug] 'Ende? Verlässt einer von ihnen das Programm? – fuz
'man fork', Rückgabewert:" Bei Erfolg wird die PID des untergeordneten Prozesses im übergeordneten Element zurückgegeben, und 0 wird im untergeordneten Element zurückgegeben. Bei einem Fehler wird -1 im übergeordneten Element zurückgegeben, kein untergeordneter Prozess wird erstellt. und errno wird entsprechend gesetzt. " – keltar
" wird ständig neu zugewiesen "- Ich sehe nur eine Zuweisung zu' childPid' in diesem Code und seine * nicht * in einer while-Schleife – WhozCraig