我发现VC创建匿名管道,创建出来的两个句柄都不是阻塞的,WaitForSingle会立刻返回。
我的需求是: WaitFor一个管道句柄的时候,应该在管道有数据的时候返回。不知道能不能做到这样呢? 就是设置管道句柄的状态为阻塞,直到有数据I/O产生,才能从Wait函数返回?
下面这个小程序是会立刻运行结束,打印"Ok"的:#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;
}如何达到我的需求呢? 谢谢!
我的需求是: WaitFor一个管道句柄的时候,应该在管道有数据的时候返回。不知道能不能做到这样呢? 就是设置管道句柄的状态为阻塞,直到有数据I/O产生,才能从Wait函数返回?
下面这个小程序是会立刻运行结束,打印"Ok"的:#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;
}如何达到我的需求呢? 谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货