【发布时间】:2016-10-05 12:37:41
【问题描述】:
假设我在 c++ 上使用 system("foocmd param1") 运行 unix 命令。
如果foocmd 通过stderr 将“无效参数”返回到终端,那么我如何让我的c++ 代码知道foocmd 是否失败?
这是我尝试的解决方案:
我的假设是我应该通过调用命令来检查是否有任何东西返回到 stderr。 为此,我尝试切换到 popen。目前,这是我检查的方式。我首先将我的标准错误输出到一个文件中。
sprintf(cmd, "foocmd param1 2>temp.txt");
system(cmd);
然后我检查 temp.txt 是否为空。
但必须有更好的方法。谁能帮帮我?
【问题讨论】:
-
system返回一个状态码。 -
@GillBates 找出我要查找的退出代码似乎不是一件麻烦事吗?从我刚刚阅读的内容来看,退出代码似乎没有规则,这取决于它的编码方式。这似乎意味着即使都是错误也可以有多个退出代码?
-
您运行的命令的文档应该记录可能的退出代码。如果不是,那么您可以假设它遵循标准约定,零是可以的,任何非零都意味着
system函数失败或命令失败(取决于system返回正值还是负值)。基本上就像你从 shell 运行命令一样。