gpt4 book ai didi

c# - Azure 上的管道读取失败

转载 作者:太空狗 更新时间:2023-10-29 23:08:04 24 4
gpt4 key购买 nike

我有一个旧应用程序,正在尝试在 Azure 工作线程下运行。该应用程序使用相当常见的模式来启动子进程,方法是创建匿名管道,将标准输出重定向到管道,生成子进程,然后使用管道进行通信。

为了让它在 Azure 下运行,我对 dll 进行了 P/Invoke 调用,以启动整个过程。

所有这些在 Azure 之外都可以正常工作,但即使在模拟器下运行也会失败。

在 Azure 下运行时,进程无法通过管道进行通信。具体来说,父级读取管道句柄的调用失败(超时)。

最佳答案

我终于发现问题是因为遗留代码复制了标准输出句柄以传递给子进程。

在 Azure 下运行时,STDOUT 的 GetStdHandle 返回 0x0。这基本上意味着“没有错误,但你没有 STDOUT”。显然,您需要检查 0x0 和 INVALID_HANDLE。

创建句柄,在启动子进程之前将它们设置在 STARTUPINFO 上,而不是复制现有的句柄,从而解决了所有问题。

关于c# - Azure 上的管道读取失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10659531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com