|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Apr 2006
Messaggi: 36
|
[C UNIX] albero binario di processi
che ne pensate di questo codice? vi sembra corretto?
non ho potuto trovare altri esempi sulla costruzione di un albero binario di processi. #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/wait.h> #define N 7 pid_t p1,p2; int status,status2; void build_tree(int); void build(int i); int main(int argc,char* argv[]) { printf("processo di partenza:%d\n",getpid()); build_tree(1); return 0; } void build_tree(int i) { if (i*2<=N){ if(fork()==0){ printf("pid:%d ppid:%d\n",getpid(),getppid()); build_tree(2*i); exit(2*i); } else{ p1 = wait(&status); printf("--terminato %d status:%d\n",p1,WEXITSTATUS(status)); } } if(i*2+1<=N){ if(fork()==0){ printf("pid:%d ppid:%d\n",getpid(),getppid()); build_tree(2*i+1); exit(2*i+1); } else{ p2 = wait(&status2); printf("--terminato %d status:%d\n",p2,WEXITSTATUS(status2)); } } exit(i); } OUTPUT: ./process_tree processo di partenza:13431 pid:13432 ppid:13431 pid:13433 ppid:13432 --terminato 13433 status:4 pid:13434 ppid:13432 --terminato 13434 status:5 --terminato 13432 status:2 pid:13435 ppid:13431 pid:13436 ppid:13435 --terminato 13436 status:6 pid:13437 ppid:13435 --terminato 13437 status:7 --terminato 13435 status:3 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:10.