Codice: Seleziona tutto
//shell padre
char comando[256];
int status;
while(1){
scanf("%s",comando);
if (strcmp(comando,"exit"); //se digito exit esco
break;
pid_t pid = fork();
if (pid==0){ //sono nel figlio
execvp(comando,NULL); //nel caso non vi siano parametri
}
else
wait(&status);
}
exit(0);
E fin qui mi è chiaro..Per ogni nuovo comando creo un nuovo processo shell che si occuperà di lanciarlo(senza creare un nuovo processo,con la chiamata execvp) e pongo il padre in attesa della terminazione.Il mio dubbio è questo:questo schema è valido per tutti gli eseguibili lanciati da shell?
Cioè se il comando fosse un mio banale programma c opportunamente compilato, la shell fa le stesse cose?Ed ancora..Questo schema è valido anche per i comandi interni?Grazie