fSuccess = ReadFile(
hPipe, // pipe handle
chBuf, // buffer to receive reply
BUFSIZE*sizeof(TCHAR), // size of buffer
&cbRead, // number of bytes read
NULL); // not overlapped
如果不安全,在Windows中读取管道时如何确保对方不写?
答案 0 :(得分:3)
是的,这对管道来说是完全合法的操作。管道的一端可以读取和写入管道,而不管另一端发生了什么。
答案 1 :(得分:0)
这是非常安全的 - 管道自动处理缓冲区上的所有必要同步。如果在另一个进程已关闭与管道的连接时尝试写入/读取管道(通过关闭管道显式,或者通过退出进程显式隐式),您将从{{1}获得ERROR_BROKEN_PIPE
}}。如果您正在使用匿名管道,则父进程通常会查找此进程以检测子进程何时退出,因此将无法处理更多数据。