per*_*ser 2 c++ shell batch-file return-code
我们有一个C++程序,有时这个程序需要执行用户定义的批处理/ shell/ant脚本.我们无法控制此脚本的运行方式.有没有办法从C++程序获取返回代码?
像:exec一个script.sh> status.tmp?
我们需要支持Windows和Linux.
有任何想法吗?
另一个简单的方法就是使用marco WEXITSTATUS获得回报.几乎与使用waitpid调用获得子进程的返回值的方式相同(在基于Unix的系统中).
这是示例程序.我有一个C/C++程序和一个简单的bash脚本.
示例bash脚本
#!/bin/bash
echo "I am in Script"
exit 5;
Run Code Online (Sandbox Code Playgroud)
示例C/C++程序
int i, ret = system("./b.sh 2>&1 > /dev/null");
i=WEXITSTATUS(ret);
printf("My val= %d\n",i);
Run Code Online (Sandbox Code Playgroud)
产量
./a.out
My val= 5
Run Code Online (Sandbox Code Playgroud)
如果您想要更高级的方法从脚本中获得多个返回代码或想要一个交互式会话,那么您可能应该使用popen
希望这可以帮助.