【问题标题】:Accessing the values returned by an executable C++访问可执行 C++ 返回的值
【发布时间】:2016-10-17 10:36:11
【问题描述】:

我正在使用系统命令从 C++ 程序运行一个可执行文件(用 C# 编写)并将一个字符串传递给它。可执行文件返回一些字符串。是否可以从 C++ 程序访问可执行文件返回的字符串?有没有使用系统命令的简单方法?我正在使用视觉工作室。

【问题讨论】:

  • 您可以使用标准输出来捕获返回值。 c# 的输入可以在参数列表中,也可以通过标准输入。
  • 我将输入传递给 exe 文件:system((std::string("C:\\file.exe") + output).c_str());其中 file.exe 是 C# 可执行文件。如何访问 c++ 程序的输出?
  • 您正在使用文件来传递数据,而不是像我建议的那样使用流(标准输入和标准输出)。在 c++ 中,使用 stdout 和 stdin 作为文件指针来捕获 c# 程序的输入和输出(c++ 标准 I/O 库)。

标签: c++ return system executable


【解决方案1】:

如果您的意思是字符串被写入 c# 程序的命令行并且您想要捕获它,那么您可以使用命名管道来拦截 c# 程序生成的输出。

https://msdn.microsoft.com/en-us/library/ms682499.aspx

来自你的 C++ 程序

或者,请澄清您所说的“运行可执行文件”和“使用系统命令”是什么意思——您是在编写代码还是在命令提示符下运行?

【讨论】:

  • 我假设您在运行 c# 程序时使用的是 WIndows。如果是 Linux 环境:stackoverflow.com/questions/478898/…
  • 我有一个用 C++ 编写的程序,我从中调用一个用 C# 编写的 exe.file,使用以下代码:system((std::string("C:\\file.exe") +输出).c_str());来自视觉工作室。现在我想从 C++ 代码中读取可执行文件返回的输出。
  • 您必须在 Windows 上运行,因此 popen 不适合您 - 阅读我发送给您的 msdn 链接,它向您展示了如何在 Windows 上使用 c++ 执行等效操作 - popen 和 CreatePipe 是是特定于操作系统的。您将需要手动管理 c# 进程的创建,以便您拥有可以传递给 Windows API 以监视标准输出的进程的句柄。请参阅此处的示例stackoverflow.com/questions/28222285/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-27
  • 2013-01-03
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多