当另一边写入管道时读取管道是否安全?

时间:2010-08-23 15:33:10

标签: c++ winapi communication pipe

      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中读取管道时如何确保对方不写?

2 个答案:

答案 0 :(得分:3)

是的,这对管道来说是完全合法的操作。管道的一端可以读取和写入管道,而不管另一端发生了什么。

答案 1 :(得分:0)

这是非常安全的 - 管道自动处理缓冲区上的所有必要同步。如果在另一个进程已关闭与管道的连接时尝试写入/读取管道(通过关闭管道显式,或者通过退出进程显式隐式),您将从{{1}获得ERROR_BROKEN_PIPE }}。如果您正在使用匿名管道,则父进程通常会查找此进程以检测子进程何时退出,因此将无法处理更多数据。