我正在为我的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); }
谁能帮助我吗?感谢
答案 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()根据您调用的内容的成功或失败返回代码。
答案 2 :(得分:0)
我记得execve
调用for shell脚本,这些脚本在大学的第一行中有#! interpreter
。如果您使用的是system
,请考虑尝试execve
。脚本的pid上的wait
可以帮助接收退出状态。