如何创建一个让WaitForSingle阻塞的匿名管道?
我发现VC创建匿名管道,创建出来的两个句柄都不是阻塞的,WaitForSingle会立刻返回。
我的需求是: WaitFor一个管道句柄的时候,应该在管道有数据的时候返回。
不知道能不能做到这样呢? 就是设置管道句柄的状态为阻塞,直到有数据I/O产生,才能从Wait函数返回?
下面这个小程序是会立刻运行结束,打印"Ok"的:
- C/C++ code
#include "stdafx.h"#include<Windows.h>int _tmain(int argc, _TCHAR* argv[]){ HANDLE ReadPipe, WritePipe; BOOL fRet = CreatePipe( &ReadPipe, &WritePipe, NULL, 0 ); if( !ReadPipe || !WritePipe || !fRet ) { return 1; } WaitForSingleObject(ReadPipe,INFINITE); WaitForSingleObject(WritePipe,INFINITE); printf("Ok\n"); return 0;}
如何达到我的需求呢? 谢谢!
[解决办法]
ReadFile,WriteFile即可
[解决办法]
有数据产生后马上SetEvent