繁体   English   中英

匿名管道的PeekNamePipe()的替代方法— WIN32

[英]alternatives to PeekNamePipe() with anonymous pipe — WIN32

我有一个程序可以启动另一个控制台程序作为其子进程,并使用匿名管道与之通信。 我重定向了它的标准输入和标准输出。 伪代码如下:

// Create pipes for stdin and stdout
CreatePipe(&std_in_rd, &std_in_wr, NULL, 0);
CreatePipe(&std_out_rd, &std_out_wr, NULL, 0);

// redirection
startup_info.hStdOutput = std_out_wr;
startup_info.hStdInput = std_in_rd;

// create the process
CreateProcess(...);

// send command to the child process.
WriteFile(hWriteStdin, ...);

// receive feedback from the child process.
ReadFile(hReadStdout, ...);

但是,子进程在处理命令时需要时间,而且我不知道我应该等待多少时间才能获得其输出。 我使用了一个调用PeekNamedPipe的循环来检查是否可以从管道中读取数据,但是这种方法不利于CPU的使用。

子进程不是由我编写的,我无法修改其代码。

当子进程完成写操作时,如钩子一样,如何获得通知?

谢谢。

您应该尝试使用ReadFileEx()从管道异步读取。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM