父子进程都是单文档mfc,父进程创建了匿名管道,再创建子进程并继承管道句柄,
父子进程都写入数据,为什么第2个写入的数据不能读出来,这是什么机制啊?
这是一些代码。
父进程的写入命令。
void CParentView::OnPipeWrite() 
{
// TODO: Add your command handler code here
char buf[]="http://www.sunxin.org";
DWORD dwWrite;
if(!WriteFile(hWrite,buf,strlen(buf)+1,&dwWrite,NULL))
{
MessageBox("写入数据失败!");
return;
}
}
子进程的写入命令:
void CChildView::OnPipeWrite() 
{
// TODO: Add your command handler code here
char buf[]="匿名管道测试程序";
DWORD dwWrite;
if(!WriteFile(hWrite,buf,strlen(buf)+1,&dwWrite,NULL))
{
MessageBox("写入数据失败!");
return;
}
}

解决方案 »

  1.   

    如果一个写一个读,父子先后都可以。就是两个都写的话,后写的进程写入的数据读不出来了。
    父进程读:
    void CParentView::OnPipeRead() 
    {
    // TODO: Add your command handler code here
    char buf[100];
    DWORD dwRead;
    if(!ReadFile(hRead,buf,100,&dwRead,NULL))
    {
    MessageBox("读取数据失败!");
    return;
    }
    MessageBox(buf);
    }
    子进程读:
    void CChildView::OnPipeRead() 
    {
    // TODO: Add your command handler code here
    char buf[100];
    DWORD dwRead;
    if(!ReadFile(hRead,buf,100,&dwRead,NULL))
    {
    MessageBox("读取数据失败!");
    return;
    }
    MessageBox(buf);
    }