Pagina 1 di 1

[C] eliminare output funzione system()

Inviato: dom ott 13, 2019 1:32 pm
da maurotramonti
Ciao, sto sperimentando la scrittura di una shell in C.
Questo è il codice:

Codice: Seleziona tutto

#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>
#include<unistd.h>
void remove_new_line(char *s) {         //funzione che rimuove il carattere newline dall'hostname
    while (*s) {
        if (*s == '\n') {
            *s='\0';
        }
        s++;
    }
}

int main() {
char hostname[32];
char command[64];
int hnf;
hnf=open("/etc/hostname", O_RDONLY);              //determina l'hostname da /etc/hostname
read(hnf,hostname,sizeof(hostname));
remove_new_line(hostname);
close(hnf);
printf("%s@%s >",getenv("USER"),hostname);
do{
scanf("%s",&command);					//legge continuamente i comandi
if(strcmp(command,"exit")==0) {			//in caso di exit, esce dal ciclo
	break;
}
else if(system(command)){                                            
	printf("%s: comando non trovato\n",command);             //qui sta il problema
}
else{
	system(command);								//esegue il comando

}

printf("%s@%s >",getenv("USER"),hostname);                    //visualizza nuovamente il prompt



} while(1);       //ciclo infinito

printf("Bye!\n"); //saluto
return 0;

}

Il problema è che quando si inserisce un comando inesistente ottengo:

Codice: Seleziona tutto

mauro@mauro-pc >haha
sh: haha: comando non trovato
haha: comando non trovato
mauro@mauro-pc >
C'è un modo per eliminare "sh: haha: comando non trovato"? oppure di togliere solo 'sh'?

Grazie in anticipo a tutti. :grazie