PDA

View Full Version : [C] Implementazione Shell in C


Scanca
29-10-2014, 17:53
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);
}

Scanca
03-11-2014, 09:59
:muro: Nessuno che ha un'idea e che mi può dare una mano? :cry: