Ich bin ein bisschen verwirrt über den Wert, den die Funktion Gabel zurückgibt. Ich verstehe, dass der Wert 0
für child
Prozess und Wert >0
für parent
Prozess ist. Ich habe den Code untenSpeichern des Rückgabewerts von fork in einer Variablen in C
int main()
{
int pid;
pid = fork();
if(pid == 0)
//DO SOMETHING
else
//DO SOMETHING ELSE
return 0;
}
Die valiable pid
nach Gabel für jeden Prozess unterschiedlich ist? Ich kann nicht verstehen, wie es den Wert wechselt. Und ich habe einen zweiten Teil mit Code
int main()
{
int pid;
if (pid == 0)
{
return 5;
}
printf("parent = %d waits for child = %d ", getpid(), pid);
waitpid(pid, NULL, 0);
printf("child terminates!")
return 0;
}
, in dem ich nicht verstehen, warum pid auf Linie mit dem ersten printf
den Wert des Kindes hat. Es sollte nicht die id
des Elternteils sein?
In der zweiten Frage sagen Sie, dass 'pid' es keine Prozess-ID ist. Aber der Elternteil verwendet waitpid(), um auf den Kindprozess zu warten, und wartet. Warum ist es keine Prozess-ID? –
@DimitrisMpl Dies ist eine dem Stack zugeordnete Integer-Variable, die überhaupt nicht initialisiert wurde. Es ist NICHT die gleiche 'pid' Variable, die Sie in der anderen Funktion verwendet haben, trotz des gleichen Namens. Es enthält also nur das, was zuletzt auf dem Stapel an diesem Ort geschrieben wurde. – Ext3h