【问题标题】:Get result of command java -version in c++在 C++ 中获取命令 java -version 的结果
【发布时间】:2019-10-16 22:28:59
【问题描述】:

我正在尝试查看已安装的 java 版本是否适合从 c++ 运行。

我到处查看,但pipes 和使用“cmd + > txtfile.txt”重定向 system() 调用似乎都不适用于“java -version”的输出。

我不知道为什么,也许输出流无法重定向?

非常感谢所有帮助!

【问题讨论】:

  • 你试过什么代码?你能edit your question 并展示你的最佳尝试吗?
  • 显示您当前代码的minimal reproducible example。提示:当您执行java -version 时,Java 响应 stderr(文件描述符 2),而不是 stdout(文件描述符 1)。 (您可以在命令行上使用> 重定向标准输出和2> 重定向标准错误来验证)

标签: java c++ redirect cmd pipe


【解决方案1】:

问题是“java -version”在stderr上响应,必须使用2>而不是>重定向。

总结

使用 '2> filename.txt' 将输出写入文件

system("java -version &> temp.txt");

std::ifstream fin("temp.txt");

std::string Result = "";
std::string Line;

while(getline(fin, Line))
    Result+=Line;

fin.close();

(感谢 Erwin Bolwidt)

【讨论】:

  • 你当然也可以使用&> 符号来获取标准输出和标准错误。
猜你喜欢
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 2019-07-16
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
  • 2014-06-15
  • 2011-10-30
相关资源
最近更新 更多