子进程ReadFile读管道,阻塞会导致界面显示?

adamwyb 2011-12-27 08:22:00
我子进程里建立了一个线程来读子进程的管道(使用了标准输入句柄),结果界面的不能显示出来了,我把这个注释掉就能显示了。

HANDLE hRead = GetStdHandle(STD_INPUT_HANDLE);
DWORD dwRead = 0;
char recvBuf[RECV_BUFFER_SIZE] = {0};
while(ReadFile(hRead, recvBuf, RECV_BUFFER_SIZE, &dwRead, NULL))
{
}

这个是线程里的函数,而且这个是DLL里启动的线程
...全文
154 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
adamwyb 2011-12-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sky101010ws 的回复:]

错觉错觉

子进程不会影响主进程的
[/Quote]

不是进程,是线程
adamwyb 2011-12-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sky101010ws 的回复:]

错觉错觉

子进程不会影响主进程的
[/Quote]

不是进程,是线程
adamwyb 2011-12-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sky101010ws 的回复:]

错觉错觉

子进程不会影响主进程的
[/Quote]

不是进程,是线程
龙行天下之Sky 2011-12-27
  • 打赏
  • 举报
回复
错觉错觉

子进程不会影响主进程的
adamwyb 2011-12-27
  • 打赏
  • 举报
回复
没问题,这个试过了,界面可以显示,我都用过while(true){Sleep(10000);}
adamwyb 2011-12-27
  • 打赏
  • 举报
回复
没问题,这个试过了,界面可以显示,我都用过while(true){Sleep(10000);}
Lactoferrin 2011-12-27
  • 打赏
  • 举报
回复
ReadFile换成Sleep(20000)试试
adamwyb 2011-12-27
  • 打赏
  • 举报
回复
没有啊,CreateThread之后,就直接启动界面了,界面用qt写得,直接show。我刚才试了下,如果子线程在读ReadFile(hRead...之前,让界面show出来,就没问题,如果先ReadFile堵住了,主线程的界面就show不出来。是不是和标准输入占用了有关?
Lactoferrin 2011-12-27
  • 打赏
  • 举报
回复
主线程是否等待子线程
adamwyb 2011-12-27
  • 打赏
  • 举报
回复
子进程的,子进程通过匿名管道和主进程通信,然后子进程建立了一个线程,卡在ReadFile上,这时子进程的主线程的界面显示不出来。
Lactoferrin 2011-12-27
  • 打赏
  • 举报
回复
谁的界面的不能显示出来

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧