2010-05-24 11 views
1

Je crée un interprète pour mon extension à HQ9 +, qui a la commande supplémentaire suivante appelée V:Exécution d'un script shell à partir d'une application C++ et vérifier si elle réussit

V: Interprêtes le code comme Lua, Brainfuck , INTERCAL, Ruby, shellscript, Perl, Python, PHP dans cet ordre, et même si une seule erreur a occoured, course peut être interprété le code HQ9 + -ABC à nouveau

plupart d'entre eux ont des bibliothèques, BF et INTERCAL sans une bibliothèque, mais le problème réside dans ShellScript. Comment puis-je lancer un shellscript depuis mon application C++ (= l'interpréteur HQ9 + -ABC) et quand c'est fait, obtenir le code d'erreur (0 = réussi, tous les autres = échec)? Donc, quelque chose comme ça:

system(".tempshellscript738319939474"); 
if(errcode != 0) { (rerun code); } 

Quelqu'un peut-il m'aider? Merci

Répondre

2

De man system(3):

 
    RETURN VALUE 
     The value returned is -1 on error (e.g. fork failed), and the return 
     status of the command otherwise. This latter return status is in the 
     format specified in wait(2). Thus, the exit code of the command will 
     be WEXITSTATUS(status). In case /bin/sh could not be executed, the 
     exit status will be that of a command that does exit(127). 
0

Je me souviens execve appel de travail pour les scripts shell qui avaient #! interpreter dans leur première ligne pour une mission à l'université. Si vous utilisez system, essayez également execve. wait sur le pid du script pourrait aider à recevoir le statut de sortie.