从C ++应用程序运行shell脚本并检查它是否成功

时间:2010-05-24 01:04:12

标签: c++ system

我正在为我的HQ9 +扩展创建一个解释器,它有一个名为V的额外命令:

  

V:按顺序将代码解释为Lua,Brainfuck,INTERCAL,Ruby,ShellScript,Perl,Python,PHP,如果发生一个错误,再次运行HQ9 + -ABC代码

大多数都有库,BF和INTERCAL可以在没有库的情况下解释,但问题在于ShellScript。如何从我的C ++应用程序(= HQ9 + -ABC解释器)运行一个shellcript,当它完成时,得到错误代码(0 =成功,其他所有=失败)?所以像这样:

system(".tempshellscript738319939474");
if(errcode != 0) { (rerun code); }
谁能帮助我吗?感谢

3 个答案:

答案 0 :(得分:2)

来自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).

答案 1 :(得分:1)

system()根据您调用的内容的成功或失败返回代码。

http://www.cplusplus.com/reference/clibrary/cstdlib/system

答案 2 :(得分:0)

我记得execve调用for shell脚本,这些脚本在大学的第一行中有#! interpreter。如果您使用的是system,请考虑尝试execve。脚本的pid上的wait可以帮助接收退出状态。