Corvo80
26-09-2005, 11:19
Ok l'ultima volta ho preteso troppo ma stavolta vi chiedo un aiuto relativamente semplice. Non mi e'chiaro il funzionamento della fork(), guardate il seguente codice:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
#define N 2
main()
{
pid_t pid;
int i;
for (i=0; i<N; i++) {
printf("Processo %i forka\n",getpid());
pid=fork();
}
if(pid == 0)
printf("Sono il processo figlio (PID: %d).\n",(int)getpid());
else if(pid>0)
printf("Sono %i, il genitore del processo con PID %d.\n",getpid(), pid);
else
printf("Si e' verificato un errore nella chiamata a fork.\n");
}
Esso dovrebbe generare N processi; in verita', ne genera 2^N e non capisco come mai... Vorrei sapere dove sbaglio e come posso ovviare al problema, senza usare i thread. Grazie.
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
#define N 2
main()
{
pid_t pid;
int i;
for (i=0; i<N; i++) {
printf("Processo %i forka\n",getpid());
pid=fork();
}
if(pid == 0)
printf("Sono il processo figlio (PID: %d).\n",(int)getpid());
else if(pid>0)
printf("Sono %i, il genitore del processo con PID %d.\n",getpid(), pid);
else
printf("Si e' verificato un errore nella chiamata a fork.\n");
}
Esso dovrebbe generare N processi; in verita', ne genera 2^N e non capisco come mai... Vorrei sapere dove sbaglio e come posso ovviare al problema, senza usare i thread. Grazie.