Ciao a tutti ragazzi, lo scopo è quello di creare un albero binario di processi ad arbitraria profondità con l'uso della funzione fork() ecc...
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#define N 3
void build_binary_tree_processes(int level){
int figlio_1,figlio_2,x,livello=0;
jmp:
figlio_1=fork();
if(figlio_1){
figlio_2=fork();
if(figlio_2){
waitpid(figlio_2,&x,0);
waitpid(figlio_1,&x,0);
exit(0);
}
livello++;
printf("(figlio_2)<PPID>: %d <PID>: %d <livello>: %d\n",getppid(),getpid(),livello);
if(livello==level)
exit(0);
else
goto jmp;
}
livello++;
printf("(figlio_1)<PPID>: %d <PID>: %d <livello>: %d\n",getppid(),getpid(),livello);
if(livello==level)
exit(0);
else
goto jmp;
}
int main(){
build_binary_tree_processes(N);
return 0;
}
Questa è la soluzione che ho trovato, è da un po che mi sto arrovellando ma non riesco a trovare una soluzione che non sia ne ricorsiva, ne con l'uso della goto.....
Avete suggerimenti ??
Grazie