永发信息网

PeekNamedPipe 阻塞

答案:2  悬赏:70  手机版
解决时间 2021-01-29 01:27
(vc++)我用createpipe创建了一个匿名管道,并把读句柄传给子进程。我想在程序中用
PeekNamedPipe(hReadPipe,NULL,NULL,NULL,&tempdword,0);看管道内还有多少字节的信息,结果函数就阻塞在那了。这是为什么

我是这么写的
SECURITY_ATTRIBUTES sa;
sa.nLength=sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor=NULL;
sa.bInheritHandle=true;
CreatePipe(&hReadPipe,&hMyWritePipe,&sa,0);
CreatePipe(&hMyReadPipe,&hWritePipe,&sa,0);
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdOutput = hWritePipe;
si.hStdInput = hReadPipe;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
CreateProcess((LPSTR)(LPCTSTR)exepath,NULL,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi));
在大部分情况下
PeekNamedPipe(hReadPipe,NULL,NULL,NULL,&tempdword,&nextword);

不会阻塞,但是某些情况下就会,不知道为什么?谢谢~
最佳答案
Note :
The PeekNamedPipe function can block thread execution the same way any I/O function can when called on a synchronous handle in a multi-threaded application.
To avoid this condition, use a pipe handle created forasynchronous I/O.

The PeekNamedPipe() problem on XP only happens when another thread has entered ReadFile() on the read end of the pipe and has not yet returned. Namely, a ReadFile() blocked on the read end of the pipe in one thread will cause any subsequent PeekNamedPipe() in a second thread to also block -- until ReadFile() in the first thread returns.

英语不好,就不翻译出来了。看看对你有没有帮助。
全部回答
PeekNamedPipe(hReadPipe,NULL,NULL,NULL,&tempdword,&nextword); return tempdword+nextword;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
羊角沟村怎么去啊,我要去那办事
天津市九十六中学地址好找么,我有些事要过去
术散的意思是什么啊?知道的请说下!
求一首日文歌,女的唱得,里面有歌词oh my bab
铁沟门村怎么去啊,我要去那办事
天津市南王平中学地址在哪,我要去那里办事
把一些关于自己的秘密告诉了别人,可之后又害
买房时,购房合同写男方的名字,办理房产证时
标准气缸组成与应用是什么?
贝子沟村地址在哪,我要去那里办事
下稠沟村地址有知道的么?有点事想过去
鼓凸的意思是什么啊?知道的请说下!
左边目右边于念什么
如图,在一次龙卷风中,一棵大树在离地面若干米
天津市天辰高级中学地址有知道的么?有点事想
推荐资讯
大西山村地址好找么,我有些事要过去
新天地灯具城地址在什么地方,想过去办事
GG是神马意思?
【百富国际大厦】英语翻译北京市朝阳区工体东
煤矿企业6S管理是什么
颐尊会(凯悦店)地址在什么地方,想过去办事
水族箱养鱼放在阳光下可以吗
上古卷轴5哈尔起哈要塞跟哈孔大君说话为啥不
停车场(蒲城县烟草专卖局西南)地址好找么,我
护士给10个月患先天性巨结肠患儿用等渗盐水灌
潮丰摩托车行地址在什么地方,我要处理点事
鸿顺旅社(黔西南安龙县)地址在什么地方,想过
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?