我需要从子进程向父进程发送数据。这些数据中的一些是HTML、纯文本等,但也可能需要发送图像数据、zip文件数据等。
据我所知,匿名管道使用子进程标准输入和标准输出。传统上,stdin和stdout只传递文本数据:使用这种机制发送不可打印的字符会有什么问题吗?
发布于 2012-11-23 04:52:38
匿名管道和标准输入/输出之间没有关系。因为一个进程只有一个stdin/out,所以您可以这样为每个进程创建一个匿名管道,这听起来很愚蠢,不是吗?您可以将stdin/从子进程重定向到管道,是的。但是,如果子进程能够通过另一种方式(如日志文件或网络活动)报告自身,则不必这样做。对CreatePipe
的调用提供了读写句柄,如何使用它们由您决定。发送任意二进制数据确实是可能的。匿名管道在这方面与命名管道没有什么不同。
发布于 2012-11-23 05:15:24
即使您选择使用stdin/stdout重定向将管道句柄传递给子进程,只要子进程使用Windows API而不是C运行时库函数发送数据,也不会有任何问题。
也就是说,WriteFile
将完美地工作,但printf
不是一个好主意。
您可以使用GetStdHandle
获取管道的句柄,以便与Windows API函数一起使用。
https://stackoverflow.com/questions/13514366
复制相似问题