gpt4 book ai didi

Windows:具有重定向输入和输出的子进程

转载 作者:可可西里 更新时间:2023-11-01 14:29:10 24 4
gpt4 key购买 nike

我正在尝试创建一个具有重定向输入和输出的子进程(如此处所述 - http://msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx)。

For the people that don't want to bother reading the source code on that page, the author is using anonymous pipes to redirect the child's input and output. The parent process writes to the child process's input and reads from the child process's output.

然而,在该代码中,程序在读取和写入后关闭管道(在 WriteToPipe 和 ReadFromPipe 中),因此实际上程序只是读取一个文件,将其转储到子进程输入流中,然后读取子进程响应。

现在,我正在寻找的是我们不会关闭管道的代码,但我们会不断发布请求并读取子进程响应(与仅发出 1 个请求相反)。

我已经尝试对上面发布的链接中给出的源代码进行多次修改,但无论我尝试什么,在 ReadFromPipe() 函数中调用 ReadFile() 时程序总是挂起(它可能等待 child 退出 - 但正如我所说,我喜欢得到 child 的回应,然后向它发送其他请求)。

关于如何克服这个问题有什么想法吗?

更新:

谁能至少告诉我将 .NET Process 类与 RedirectStandardInputRedirectStandardOutput 一起使用是否是一个好的选择?

最佳答案

有完全相同的问题,并通过使用 PeekNamedPipe(根据 MSDN 也适用于匿名读取管道)在每次调用 ReadFile 之前检查可用数据来解决它。这消除了我遇到的阻塞问题,并允许我的 GetExitCodeProcess() 看到进程已经退出并清理管道。

关于Windows:具有重定向输入和输出的子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3722409/

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