返回失败的输出
get failed output back
我正在尝试运行脚本并在控制台中输出结果。它可以工作,但是有一个
我现在面临的是一个小问题。如果"脚本"文件写错了,我得到的输出类似于: syntax error, unexpected $undefined, expecting $end puts
这是非常好的,它告诉我脚本文件内的代码有问题,但在我的代码行:
printf("%s", path);
它没有打印出来,我希望它打印出来,这样我就可以在屏幕上显示出来。请帮帮我吧
fp = popen("our script...is here", "r");
if (fp == NULL)
/* Handle error */;
while (fgets(path, PATH_MAX, fp) != NULL)
printf("%s", path);
status = pclose(fp);
Ps:只是为了让它更清楚,我使用xcode和不介意的代码在C或c++
默认情况下,fgets()
只从流的stdout读取。要捕获stderr
,只需将其重定向到stdout
:
fp = popen("./script 2>&1", "r");
现在标准输出和标准错误都将变为标准输出,您的C代码可以从中读取。
注意,一旦像上面那样重定向,就没有办法区分标准输出和标准错误了。
您必须关心stderr - popen()
只处理stdout:
相反,从"已打开"流读取命令的标准输出
shell错误将被打印到stderr -这是popen()无法处理的。
相关文章:
- 如果没有malloc,链表实现将失败
- 递归函数计算序列中的平方和(并输出过程)
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 为什么在程序按预期运行和输出后出现运行失败错误?
- 重定向标准输出时调用 dup2 失败
- 为什么输出有时会失败
- curl apis 在 DNS 启动和关闭时不会更改值,但 curl 命令提供成功/失败输出
- 为什么我们总是检查输入是否失败而不检查输出
- 运行时检查失败 #2,AND 数组值与输出交换不正确
- 提升精神业力 - 具有约束和传播失败的字符串的输出向量
- Gtest:捕获输出,但在失败时打印
- 重新打开后,将文件写入标准输出失败
- Visual Studio 2012 c++构建失败,但错误列表或输出中没有任何内容
- 我可以只获得boost单元测试失败的日志输出吗?
- 设置MP3编码器mft输出类型失败
- 返回失败的输出