[C] eliminare output funzione system()

"Null reference exception"? no, grazie, prendo un "unexpected T_VARIABLE"... Questo è il forum per imparare l'arte della programmazione o per chiedere un parere su una sessione di debug particolarmente ostica.
Regole del forum
Ricorda di indicare chiaramente nell'oggetto il linguaggio ([C#] oppure [PHP], [Java], [HTML], ...), se la discussione ne riguarda uno in particolare!
Rispondi
Avatar utente
maurotramonti
Livello: DVD-ROM (5/15)
Livello: DVD-ROM (5/15)
Messaggi: 110
Iscritto il: mar mag 01, 2018 3:28 pm
Località: Alessandria
Contatta:

[C] eliminare output funzione system()

Messaggio da maurotramonti » dom ott 13, 2019 1:32 pm

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
Computer: Intel Pentium Dual CPU 2.16 GHz - 4 GB RAM - 160 GB HDD - Ubuntu 16.04 Xenial Xerus
Coltiva Linux, che Windows is pianta da solo!

Rispondi
  • Argomenti simili
    Risposte
    Visite
    Ultimo messaggio