ragazzi non ho capito il perchè del comportamento.....quando eseguo la prima fork pid =0 ma quindi le istruzioni di if(!pid) sono eseguite mentre come regola quelle dell'else non dovrebbero essere eseguite invece le esegue a perchè?
#include <sys/types.h>
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
main()
{
pid_t pid;
int status;
/* genera primo figlio*/
pid=fork(); /*esattamete qui */
if (!pid)
{
printf("Sono il primo filgio:PID=%d PPID=%d\n",getpid(),getppid());
exit(0);
}
else
{
pid=fork();
if (!pid)
{
printf("Sono il secondo filgio:PID=%d PPID=%d\n",getpid(),getppid());
exit(0);
}
else
{
pid=wait(&status);
printf("primo figlio terminato:PID=%d Stato=%d\n",pid,status);
pid=wait(&status);
printf("secondo figlio terminato:PID=%d Stato=%d\n",pid,status);
printf("programma terminato");
}
getchar();
}
}