有关Metatrader中多个FILEOPEN()函数访问一个文件需要注意的事项

19 十二月 2017, 05:27
Hexiang Zheng
0
187

因为METATRADER用的是WINDOWS 系统,不像MAC OS,对于文件流的操作,有着一些区别,使用FILEOPEN()函数和其他计算机语言对计算机内的文件操作是一样的,只是METATRADER还残缺部分文件操作功能,不过不重要了,重点说下这几个参数:


FILE_READ:这个单独用,就叫做独占只读,其它程序在这个文件释放之前不可再handle这个文件;

FILE_WRITE:这个单独用,就叫做独占只写,其它程序在这个文件释放之前不可再handle这个文件;


FILE_SHARE_READ:这个不能单独用,要配合FILE_READ或FILE_WRITE,

FILE_SHARE_READ配合FILE_READ,就是众多程序可以一起读(注意:只能读不能写),而且这个程序只能读;

FILE_SHARE_READ配合FILE_WRITE,就是众多程序可以一起读(注意:只能读不能写),但是只有这个程序可以写;


FILE_SHARE_WRITE:这个不能单独用,要配合FILE_READ或FILE_WRITE,

FILE_SHARE_WRITE配合FILE_READ,就是众多程序可以一起写(注意:只能写不能读),但是只有这个程序可以读;

FILE_SHARE_WRITE配合FILE_WRITE,就是众多程序可以一起写(注意:只能写不能读),而且这个程序只能写;


真他妈复杂,其实我们主要实现的功能是C/S模式,即实现一个程序可写,让其它程序都来读取,那应该这样写:

Server端:FILE_WRITE|FILE_SHARE_READ:这个上面已经解释了;

Client端:FILE_READ|FILE_SHARE_READ|FILE_SHARE_WRITE:就是众多程序可以一起读和写(写就是给Server去操作的),而且这个程序只能读。


主要的问题,就是要搞清楚,你读的时候,同时也得允许别人读,也得允许别人写。不能太霸道,不能naive,懂不懂啊。