#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main() {
printf("Inizio\n");
pid_t pid1, pid2;
int result1, result2, result3, result4, res_child, res_final;
int status1, status2;
// numeri variabili
int a = 9, b = 4, c = 8, d = 3, e = 5;
result1 = a - b; // padre 9 - 4 = 5
printf("%d - %d = %d\n", a, b, result1);
// figlio 8 + 3 = 11
if ((pid1 = fork()) == 0) {
res_child = c + d;
printf("%d + %d = %d\n", c, d, res_child);
exit(res_child);
} else { // padre (9-4)*(8+3) = 55
wait(&status1); // Usare `wait()` invece di `waitpid()`
result2 = WEXITSTATUS(status1) * result1; // (9-4)*(8+3)
printf("%d * %d = %d\n", WEXITSTATUS(status1), result1, result2);
}
result3 = c - d; // 8 - 3 = 5
// secondo figlio 5 + 8 = 13
if ((pid2 = fork()) == 0) {
res_child = e + c;
printf("%d + %d = %d\n", e, c, res_child);
exit(res_child);
} else { // padre 13 * 5 = 65
wait(&status2); // Usare `wait()` invece di `waitpid()`
result4 = WEXITSTATUS(status2) * result3;
printf("%d * %d = %d\n", WEXITSTATUS(status2), result3, result4);
}
res_final = result2 - result4; // 55 - 65 = -10
printf("%d - %d = %d\n", result2, result4, res_final);
printf("((%d-%d)*(%d+%d))-((%d-%d)*(%d+%d)) = %d\n", a, b, c, d, e, c, result2, result4, res_final);
return 0;
}