我需要将 Windows C++ 程序连接到旧版 GNAT Ada 程序。 Windows 程序将遗留的 Ada 程序生成为一个单独的进程,然后等待它返回。
我可以将 Ada 主程序编写为返回整数的函数。我可以在 Window 中看到,我可以通过调用 WaitForSingleObject()
等待进程完成,并且我可以调用 GetExitCodeProcess()
- 但这些似乎都不是告诉我 Ada 程序返回了什么——我说得对吗?
返回值似乎是调用本身是否返回错误,而不是被调用的进程。
我应该查看进程信息句柄还是类似的东西?
谁能告诉我如何将 Ada 程序的返回值返回给调用 Windows 程序?
最佳答案
我假设您无权访问遗留应用程序的源代码,或者您不希望进行任何更改。
如果遗留应用程序正在将结果写入标准输出(STDOUT
),您可以重定向 Ada 程序的 STDOUT
和 STDERR
到管道。
稍后您可以从管道中提取信息并在您的 C++ 程序中对其进行解析。
您可以在此处找到有关如何将 STDOUT
重定向到 Windows 中的管道的示例:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682499%28v=vs.85%29.aspx
另一种方法是将输出重定向到一个临时文件,并在您检测到该过程已完成后解析该文件。
关于c++ - 如何将退出代码从 Ada 进程返回到调用 Windows 进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35726184/