0

我需要将数据从子进程发送到父进程。其中一些数据是 HTML、纯文本等,但也可能需要发送图像数据、zip 文件数据等。

据我了解,匿名管道使用子进程标准输入和标准输出。通常标准输入和标准输出只传送文本数据:使用这种机制发送不可打印字符会有什么问题吗?

4

2 回答 2

2

匿名管道和标准输入/输出之间没有关系。由于一个进程只有一个标准输入/输出,因此您可以这样为每个进程创建一个匿名管道,这听起来很愚蠢,不是吗?您可以将子进程的标准输入/输出重定向到管道,是的。但是,如果子进程能够通过其他方式(如日志文件或网络活动)报告自己,则您不必这样做。调用 toCreatePipe为您提供读取和写入句柄,这取决于您如何使用它们。确实可以发送任意二进制数据。在这方面,匿名管道与命名管道没有任何不同。

于 2012-11-22T20:52:38.357 回答
0

即使您确实选择使用标准输入/标准输出重定向将管道句柄传递给子进程,只要子进程使用 Windows API 而不是 C 运行时库函数发送数据,您应该不会有任何问题.

也就是说,WriteFile将完美地工作,但printf不是一个好主意。

您可以使用GetStdHandle来获取管道的句柄,以便与 Windows API 函数一起使用。

于 2012-11-22T21:15:24.040 回答