Wie erstelle ich mit Fork () nur zwei untergeordnete Prozesse?

Ich fange an, etwas C zu lernen, und während ich die Gabel studiere, warte ich auf Funktionen, bei denen ich eine unerwartete Ausgabe erhalte. Zumindest für mich.

Gibt es eine Möglichkeit, nur zwei untergeordnete Prozesse aus dem übergeordneten Prozess zu erstellen?

Hier mein Code:

#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>

int main ()
{
    /* Create the pipe */
    int fd [2];
    pipe(fd);

    pid_t pid;
    pid_t pidb;


    pid = fork ();
    pidb = fork ();

    if (pid < 0)
    {
        printf ("Fork Failed\n");
        return -1;
    }
    else if (pid == 0)
    {
        //printf("I'm the child\n");
    }
    else 
    {
        //printf("I'm the parent\n");
    }

    printf("I'm pid %d\n",getpid());

    return 0;
}

Und hier ist meine Ausgabe:

I'm pid 6763
I'm pid 6765
I'm pid 6764
I'm pid 6766

Bitte ignorieren Sie das Rohrteil, ich bin noch nicht so weit gekommen. Ich versuche nur, nur 2 untergeordnete Prozesse zu erstellen, daher erwarte ich, dass 3 "I'm pid ..." nur 1 für die übergeordneten Prozesse ausgibt, auf die ich warten werde, und 2 untergeordnete Prozesse, die über eine Pipe kommunizieren.

Lassen Sie mich wissen, wenn Sie sehen, wo mein Fehler ist.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage