Jak używać Fork () do tworzenia tylko 2 procesów potomnych?

Zaczynam uczyć się trochę C i podczas studiowania widelca, czekania na funkcje dotarłem do nieoczekiwanego wyjścia. Przynajmniej dla mnie.

Czy istnieje sposób na utworzenie tylko 2 procesów potomnych od rodzica?

Oto mój kod:

#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;
}

A oto moje wyjście:

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

Proszę, zignoruj ​​część rury, jeszcze nie dotarłem tak daleko. Po prostu próbuję utworzyć tylko 2 procesy potomne, więc spodziewam się, że 3 „I'm pid ...” wypisze tylko 1 dla rodzica, który zrobię wait i 2 procesy potomne, które będą komunikować się za pomocą potoku.

Daj mi znać, jeśli zobaczysz, gdzie jest mój błąd.

questionAnswers(5)

yourAnswerToTheQuestion