我们有一个C++程序,有时这个程序需要执行用户定义的批/shell/ant脚本。我们无法控制这个脚本的运行方式。有办法从C++程序中获取返回代码吗?
比如:执行script.sh > status.tmp?
我们需要同时支持Windows和Linux。
有什么想法吗?
发布于 2013-09-13 22:19:16
在linux中只需使用
int ret=system("myshellscrtipt.sh");
因为脚本的返回值是系统函数的返回值。在Windows中,我不知道是否有类似的函数。如果您使用Qt工具包,您可以这样做
QProcess process;
process.start( "yourShellCommand", QStringList( args );
这将是真正的跨平台..。
发布于 2013-12-11 10:36:34
另一个简单的方法是使用获得返回。与使用waitpid调用(在基于Unix的系统中)获取子进程返回值的方式大致相同。
这是示例程序。我有一个C/C++程序和一个简单的bash脚本。
示例bash脚本
#!/bin/bash
echo "I am in Script"
exit 5;
样例C/C++程序
int i, ret = system("./b.sh 2>&1 > /dev/null");
i=WEXITSTATUS(ret);
printf("My val= %d\n",i);
输出
./a.out
My val= 5
如果您希望更高级的方法从脚本中获得多个返回代码,或者希望有一个交互式会话,那么也许您应该使用波芬。
希望这能有所帮助。
发布于 2013-12-11 10:50:12
在bash中,状态代码存储在一个特殊变量中:
C:/myprogram.exe
echo $?
https://stackoverflow.com/questions/18798007
复制相似问题