父进程:
if(!CreatePipe(&hInRead, &hInWrite, &sa, 0))
{
MessageBox(L"Create pipe failed!");
return;
}
进程启动:
si.hStdInput = hInRead;bool bWriteEtr = WriteFile(hInWrite, etrBuf, strlen(etrBuf)+1, &dwWrite, NULL);子进程中
ReadFile(stdin, iBuf, strlen(iBuf)+1, &dwRead, NULL); 直接阻塞是什么原因?
在父进程中peek管道时发现管道中的数据没有被子进程读出,为什么呢?

解决方案 »

  1.   

    阻塞的原因是子进程中认为管道中没有数据可以读取,所以就处于等待状态。
    出现这种情况:你可以查下在子进程中获取的管道的读取和写入句柄是否正确,以及父进程在创建子进程时继承性问题和创建管道时CreatePipe(&hInRead, &hInWrite, &sa)中sa.bInertiable = true。
      

  2.   

    一般同时开2个管道。一个父进程写,子进程读。
    一个是反的。msdn例子就是这样,我也这样用。