假设我在c ++上使用system("foocmd param1")
运行unix命令。
如果foocmd
返回"无效的参数"通过stderr返回终端,然后如何获取我的c ++代码以了解foocmd
是否失败?
这是我尝试的解决方案:
我的假设是我应该通过调用命令检查是否有任何东西返回到stderr。 为此,我尝试切换到popen。目前,这是我检查的方式。我首先将我的stderr输出到一个文件中。
sprintf(cmd, "foocmd param1 2>temp.txt");
system(cmd);
然后我检查temp.txt是否为空。
但必须有更好的方法。任何人都可以帮我一把吗?
答案 0 :(得分:2)
通常的方法是检查system()
的返回值:
0
。system()
本身就会出现问题,您无法承担任何责任。WEXITSTATUS()
和相关的宏来了解流程是如何退出的。有关详细信息,请参阅system(3)
手册页。
大多数情况下,您只对命令是否成功感兴趣:
if (!system(cmd)) {
syslog(LOG_WARNING, "Command \"%s\" failed", cmd);
/* maybe some more error handling here */
goto err_return;
}