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.