主要是做日志记录的,为便于描叙,下面出现的A进程为主进程,B进程为日志接收进程A进程会输出一些日志信息,开始打算把信息写入文件,但是A进程可能随时崩溃,那样A崩溃时有部分信息可能不会写入文件,如果每次写文件都真实写入,效率又太低。
现在考虑让A把信息通过socket传给B进程,B进程接收信息进行存储,这样又比较麻烦,而且也不确定A崩溃时socket上缓存的数据还会发给B进程所以我想用共享内存,但不知道行不行的通
B进程开一块共享内存,从上面读取信息进行存储,A进程打开B进程共享的内存,向这块区域写信息。现在我的问题时当A进程崩溃时,这块由B进程打开的内存会不会被释放,A进程崩溃前写入的数据还会被B进程读取到吗?谢谢大家指点

解决方案 »

  1.   

    当然可以做到,效率?不好用数据说明。
    如果将B进程的内存映射到A,A进程崩溃时当然不会将B进程申请的内存空间释放了。(限内存映射方式,命名管道就像socket通讯,可能会丢数据)。
      

  2.   

    在win32系统中崩溃事件是可以被catch的。
      

  3.   

    内存映射方式完全可以做到你的要求。
    看看 http://www.yesky.com/20030117/1649013.shtml的文章吧。http://www.yesky.com/20030117/1649013.shtml