Windows环境进程间通信(一):共享文件方式

来源:互联网 发布:陌陌网络主播收入 编辑:程序博客网 时间:2024/06/06 09:13

转自:http://www.zxbc.cn/html/20090609/71620.html

共享文件方式 

(1)数据发送 

数据发送进程为通过Cfile类创建一个共享文件,然后调用write()方法想文件中写入数据,具体代码如下: 

#include <Afx.h>#include <stdio.h>#include <string.h>void main(){CString filename = _T("C:\\test.txt"); CFile file;if (file.Open(filename, CFile::modeCreate | CFile::modeWrite | CFile::shareDenyRead)) {char buf[128]={0};strcpy(buf, "I love China very much");file.Write(buf, strlen(buf));file.Close();}else {printf(_T("创建文件失败!")); } }

打开文件后,用write()来写入文件

(2)数据接收 

数据在接收进程中,通过Cfile类打开以上创建的共享文件,然后调用read()方法读取数据,具体代码如下: 

#include <afx.h>#include <string.h>#include <stdio.h>void main() {CFile file; CString filename = _T("C:\\test.txt"); if(file.Open(filename, CFile::modeRead|CFile::shareDenyWrite)==TRUE) {char Buf[100]={0}; file.Read(Buf, 100);printf("从%s中读取100byte,内容为:%s\n", filename, Buf);//file.Close();} else{ printf(_T("打开文件失败!")); }} 

注意

在上述实现中,数据发送方在open()时,传入参数:CFile::shareDenyRead,即不允许其他进程读取该文件

接收方在open()时,传入参数:CFile::shareDenyWrite,即不允许其他进程写入该文件

因此,在进行完读、写操作之后,必须立刻关闭close()文件

尽管这样,仍然存在双方撞车的可能;而且每次都需要打开、关闭文件,从而导致系统开销;


原创粉丝点击