2017-10-09 6 views
1

J'ai vu des messages similaires dans stackoverflow et d'autres sites, mais je ne trouve pas de solution à mon problème.fonction du script shell Linux ne s'exécute pas dans le programme c

J'ai le fichier consoleout.sh suivant:

#!/bin/sh 

#this way works in c: 
#echo "Hello World!" 

#but in function does not work: 
a(){ 
    echo "Hello World!" 
} 

code suivant C:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    system(". consoleout.sh"); 

    system("a"); 
    return 0; 
} 

Sans system("./consoleout.sh"), il fonctionne très bien.

+1

Êtes-vous sûr de vouloir utiliser 'un ou un code installation privée programme en C dans de tels cas? –

Répondre

3

Chaque system appelle une nouvelle instance du shell, le second ne connaît rien des fonctions définies dans le premier. Vous pouvez, cependant, appeler la fonction dans la première coquille:

system(". consoleout.sh ; a"); 
4

system() invoque un shell et attend qu'il se termine. Un autre appel à system() va créer un autre shell qui part de zéro.

Pour exécuter votre fonction shell, vous devez le faire à partir de la coquille où il a été défini:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    return system(". consoleout.sh; a"); 
}