我现在是两个控制台程序,一个是父进程,一个是子进程,子进程由父进程创建,然后父进程向一块共享内存写入数据,然后我要向子进程中发一个消息,通知它可以从内存中读东西了,然后子进程返回返回一个消息给父进程,就这样,这在控制台程序中理论上可以实现吗?可以的话谁能帮帮我该如何实现????

解决方案 »

  1.   

    我也很疑问、、、我记得看操作系统概念时就获得了这么一点信息:int main()
    {
         //.....创建子进程
          fork();     //....创建共享内存
         //....父进程等待子进程
          wait();     rerurn 0;
         
    }
      

  2.   

    有很多方法,如果用socket不光本机,和别和机器也能通信,如果只是本机的话用进程间通信就好了
      

  3.   

    我说的是socket
    不是映射文件
      

  4.   

    //发送通知
    HANDLE hEvent=::OpenEvent( EVENT_ALL_ACCESS, FALSE, (LPCSTR)(char*)strEventName);
    ::SetEvent(hEvent);
    ::CloseHandle(hEvent);//等待通知
    while ( WAIT_OBJECT_0==::WaitForSingleObject(hEvent,INFINITE) )
    {
    pThis->SendMessage(WM_TASKBAR,0,WM_LBUTTONDOWN);
    ::ResetEvent(hEvent);
    }//事件初始化无信号 手工重置
    ::CreateEvent(NULL,TRUE,FALSE,(LPCTSTR)(char*)strEventName);
      

  5.   

    socket吧,上面也可以实现不过要map一块内存出来共享使用
      

  6.   

    用Mutex就可以了. 定个名称, 让你的子进程打开, 当主进程写入后, 把Mutex开锁, 子进程获取锁之后就可以读. 
    不知道用系统的消息列表表不能工作在main, 好像只限定为winmain, 可以用的话, 子进程也可以采用GetThreadMsg, 然后由主进程PostThreadMsg进行通信.
    这些方式都随便的.
    编写时要注意多线程同步原则.