如何在两个进程中使用匿名管道通讯 ,两个进程不存在父子进程关系!
如能解决这个问题
另开贴结分
谢谢:〉

解决方案 »

  1.   

    不能用匿名管道,而是用命名管道才行,CreateNamedPipe.自己去查吧。记得给百分喽。:)
      

  2.   

    建议:同一台机器上不同进程之间的通信最好用内存映射。HOHO
      

  3.   

    我的项目里用的就是匿名的 CreatePipe(&hChildRead,&hParentWrite,&sa,0);
    CreatePipe(&hParentRead,&hChildWrite,&sa,0);ONTIME里再处理。定义消息及数据结构。
      

  4.   

    哈哈哈
    rsp19801226(飞在天上的小草~~) 
    不懂装懂的家伙
    事实证明使用匿名管道完全没问题
    看来你只能得一分了
    我来贴出代码吧
    由于是掩饰  代码简单
    句柄需要手动输入
    Server 代码:int _tmain(int argc, _TCHAR* argv[])
    {
    SECURITY_ATTRIBUTES saAttr; 
     
    saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); 
    saAttr.bInheritHandle = TRUE; 
    saAttr.lpSecurityDescriptor = NULL; 
    HANDLE hReadHandle,hWriteHandle;
    if (! CreatePipe(&hReadHandle, &hWriteHandle, &saAttr, 0)) 
    {
    printf("Error CreatePipe");
    return 0;
    }

    HANDLE hTargetProcess =OpenProcessByName("Client.exe");
    if(NULL == hTargetProcess)
    {
    printf("Error in open Process!");
    return 0;
    }
    HANDLE hTargetReadHandle = NULL;
    if(FALSE==DuplicateHandle(GetCurrentProcess(),hReadHandle,hTargetProcess,&hTargetReadHandle,0, FALSE, DUPLICATE_SAME_ACCESS)||hTargetReadHandle == NULL)
    {
    printf("Error in DuplicateHandle!");
    return 0;
    }
    DWORD dwRes=(DWORD )hTargetReadHandle;
    printf("the value of the Handle is %u\n",dwRes);
    WriteFile(hWriteHandle,"Haha ,I am devil",(DWORD )strlen("Haha ,I am devil"),&dwRes,NULL);
    WaitForSingleObject(hTargetProcess,INFINITE);
    return 0;
    }Client 代码:
    int _tmain(int argc, _TCHAR* argv[])
    {
    try
    {
    DWORD dwHandle=0;
    cin>>dwHandle;
    HANDLE hInput = (HANDLE)dwHandle;
    char chBuf[BUFSIZE];
    DWORD dwRead=0;

    BOOL bSuccess = ReadFile(hInput, chBuf, BUFSIZE, &dwRead, NULL); 
    if(TRUE == bSuccess)
    {
    chBuf[dwRead]=0;
    cout<< chBuf<<endl;
    }
    else
    {
    cout<<"Error"<<endl;
    }
    }
    catch(...)
    {
    }
    getch();
    return 0;
    }
    随便谁在Re一下拿剩下的19分,先到先得,哈哈
      

  5.   

    呵呵
    已经这么多人回了
    那我结贴吧
    不好意思
    上几次悬赏100分的帖子都没解决
    分就大家分了
    这次决定见到兔子在撒鹰
    等有人解决问题在给分 
    不过看来是省了
    这20分哥几个分了吧to raymonzhao(Raymon):
    谢谢你的建议,但是我的项目希望在进程之间维护一个类stream的通讯渠道
    使用共享内存还需要考虑同步和边界条件等
    不如这个管道好用
    嘿嘿