c++ - 如何将退出代码从 Ada 进程返回到调用 Windows 进程?

标签 c++ windows ada gnat

我需要将 Windows C++ 程序连接到旧版 GNAT Ada 程序。 Windows 程序将遗留的 Ada 程序生成为一个单独的进程,然后等待它返回。

我可以将 Ada 主程序编写为返回整数的函数。我可以在 Window 中看到,我可以通过调用 WaitForSingleObject() 等待进程完成,并且我可以调用 GetExitCodeProcess() - 但这些似乎都不是告诉我 Ada 程序返回了什么——我说得对吗?

返回值似乎是调用本身是否返回错误,而不是被调用的进程。

我应该查看进程信息句柄还是类似的东西?

谁能告诉我如何将 Ada 程序的返回值返回给调用 Windows 程序?

最佳答案

我假设您无权访问遗留应用程序的源代码,或者您不希望进行任何更改。

如果遗留应用程序正在将结果写入标准输出(STDOUT),您可以重定向 Ada 程序的 STDOUTSTDERR到管道。

稍后您可以从管道中提取信息并在您的 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/

相关文章:

c++ - 是否可以提取 lambda 的捕获列表?

c - 适用于 win C 编程的优秀 GUI 编辑器

.net - 如果存在 Microsoft SQL Server 实例,则绕过 SQLExpress 的安装

ada - Ada 中的迭代器

unit-testing - 单元测试期间 Ada 中的异常处理

python - 链接 Boost.python 示例的问题

c++ - Windows 上使用 C++ 的异步对话框

java - 将值从构造函数传递到类中的私有(private)整数

windows - 使用 VB.NET 检查 Windows 注册表中是否存在某个键

Ada Gnat 项目,其中包含针对不同构建配置的不同名称的文件