2010-02-03 6 views
0

Je dois imprimer quelque chose dans ma fenêtre lorsque le script "check.sh" ne renvoie rien, signifie validation quand aucune sortie du script n'est retournée.capture la sortie vide retournée par la ligne de commande et affiche un message si elle est vide

check.sh ne contient rien. C'est simplement un fichier sh vide qui ne retourne rien quand il est exécuté. Je teste avec un fichier sh vide (je ne peux pas vous montrer le script exact qui est pourquoi). Ce que je veux imprimer est un message comme "configurer quelque chose" à travers C quand check.sh ne retourne rien.

J'ai vérifié le tampon ligne (vérifiez dans le module ci-dessous) avec "\ n", "\ r", "\ 0", NULL .. Je ne sais pas ce qu'il prend quand le script ne retourne rien

Je vais appelle le module comme execute_command ("sh check.sh")

Voici mon module

char *execute_command(char *command) 
{ 
    FILE *fpipe; 
    char line[1024]=""; 
    //char *line = (char*)malloc(1024*sizeof(char)); 
    int i =0; 

    if (!(fpipe = (FILE*)popen(command,"r"))) 
    { // If fpipe is NULL 
     perror("Problems with pipe"); 
     exit(1); 
    } 

    while (fgets(line, sizeof line, fpipe)) 
    { 
     // printf("%s", line); 
    } 

    while(line[i]!='\0') 
    { 
     if(line[i]==' ') 
     { 
      line[i]=','; 
     } 
     i++; 
    } 
    pclose(fpipe); 
    printf("%s",line); // This is where i want to know what the buffer has when the script returns nothing 
    return(line); 
} 
+0

Veuillez améliorer la mise en forme de votre question. En particulier, indenter votre code mieux: comme c'est il est incompréhensible. Sinon, les gens (par exemple moi) ne vous aideront pas. –

+0

S'il vous plaît laissez une note sur la solution, pourriez-vous le résoudre? – spikey

Répondre

0

Selon cette fgets page de manuel, si la fin du fichier se produit avant la lecture des caractères, elle renvoie NULL et le contenu du tampon reste inchangé.

Questions connexes