|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: May 2013
Messaggi: 12
|
[C] Implementazione Shell in C
Buonasera,
devo implementare una shall in C che prende dei comandi da /bin e li esegua in pipeline tramite fork()/pipe/dup2 ma non riesco a capire come fare. Per ora riesco a mandare due comandi in pipeline, vorrei generalizzare la cosa a N comandi. void who_wc(void){ int pfd[2]; pid_t pid1,pid2; if(pipe(pfd)==-1) perror("Errore creazione pipe"); switch( pid1 = fork() ){ case -1:{ printf("Errore nella fork()"); _Exit(1); } case 0 :{ /*figlio1: eseguirà who*/ if(dup2(pfd[1],1) == -1) perror("Errore dup2"); else{ close(pfd[0]); close(pfd[1]); } execlp("who", "who", (char*)NULL); } }/*fine creazione figlio1 'who'*/ /*creazione figlio2*/ switch( pid2 = fork() ){ case -1:{ printf("Errore nella fork()"); _Exit(1); } case 0 :{ /*figlio2: eseguirà wc*/ if(dup2(pfd[0],0) == -1) perror("Errore dup2"); else{ close(pfd[0]); close(pfd[1]); } execlp("wc", "wc", "-l", (char*)NULL); } } /*ancora il padre*/ close(pfd[0]); close(pfd[1]); waitpid(pid1,NULL,0); waitpid(pid2,NULL,0); } |
![]() |
![]() |
![]() |
#2 |
Junior Member
Iscritto dal: May 2013
Messaggi: 12
|
aiuto
![]() ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:36.