Warum getppid() von Kind 1 zurück

Ich lief das Programm

#include<stdio.h>
#include <unistd.h>
main()
{
    pid_t pid, ppid;
    printf("Hello World1\n");
    pid=fork();
    if(pid==0)
    {
        printf("I am the child\n");
        printf("The PID of child is %d\n",getpid());
        printf("The PID of parent of child is %d\n",getppid());
    }
    else
    {
        printf("I am the parent\n");
        printf("The PID of parent is %d\n",getpid());
        printf("The PID of parent of parent is %d\n",getppid());        
    }
}

Die Ausgabe, die ich bekam war.

$ ./a.out 
Hello World1
I am the parent
The PID of parent is 3071
The PID of parent of parent is 2456
I am the child
The PID of child is 3072
The PID of parent of child is 1

Konnte ich nicht verstehen, die Linie

Die PID der Eltern von Kind 1

Sollte es gewesen 3071?

  • Würden Sie beobachten das Verhalten, das Sie erwarten, dass durch Zugabe geeigneter fflush(NULL); (vor der fork) und sleep(1); Anrufe (sowohl im then-und else-Teil der if, und kurz vor dem Ende main).
InformationsquelleAutor user567879 | 2013-04-18
Schreibe einen Kommentar