Problema con processi concorrenti

di il
1 risposte

Problema con processi concorrenti

Buongiorno a tutti,
sono nuovo in questo forum e avevo bisogno del vostro aiuto per risolvere il seguente problema:

creare due processi figli in ciascuno dei quali effettuare un espressione e nel ramo del processo padre effettuare la somma dei risultati delle espressioni
il codice che ho scritto è il seguente:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
void main(){
pid_t pid;
pid_t pid1;
pid_t wpid;
int status;
int x;
int y;
int z;
int ris;
printf("\n inserire valore di x: ");
scanf("%d",&x);
pid=fork();
if(pid<0){
printf("\n errore");
exit(-1);
}
if(pid==0){
printf("\n sono il primo processo figlio pid=%d", getpid());
y=x+5;
printf("\n y=%d\n ",y);
exit(y);
}
if(pid>0){
printf("\n sono il processo padre pid=%d", getppid());
pid1=fork();
if(pid1<0){
printf("\n errore");
exit(-1);
}
if(pid1==0){
printf("\n sono il secondo processo figlio pid=%d", getpid());
printf("\n x=%d \n ",x);
z=x+9;
printf("\n y=%d \n ",y);
printf("\n z=%d \n ",z);
exit(z);
}
printf("\n y=%d \n ",y);
printf("\n z=%d \n ",z);
wpid=wait(&status);
ris=WEXITSTATUS(status)+z;
printf("\n ris=%d \n",ris);
}
}

Ma il risultato non è quello aspettato.. Sapete dirmi dove sta l'errore?
Grazie

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte