我有一个应用程序读取一组数据文件并执行一些模型计算。该计划并不需要修改数据文件本身,所以我目前正在与只读标志打开它们,如下图所示:我可以允许多个程序同时读取同一个文件吗?
我想在同一运行我的程序的多个实例时间,使用相同的一组数据,但对数据执行不同的计算。我的程序都不需要修改数据文件。由于数据文件非常大,我无法为每个程序使用单独的数据副本。
我认为,因为我打开具有只读权限的文件,两个程序可能同时读取同一个文件。相反,我遇到了各种各样的错误,“文件无法打开,因为它正在被另一个进程使用”。
由于我的开发环境是Windows 7,this question suggests it might be a matter of enabling read sharing。然而,该线程中的所有答案依赖于CreateFile,而我正在处理用stdio.h编写的遗留代码。
有没有一种方法可以使用fopen类的函数同时从文件中读取多个程序?
我认为除了使用CreateFile()之外别无他法。问题是如何从句柄中获得FILE *。 – Paranaix 2012-07-19 18:23:47
你也可以使用std :: ifstream ..毕竟这是标记为C++? – stijn 2012-07-19 18:25:56
@Paranaix:'_open_osfhandle',然后是'_fdopen'。 – MSalters 2012-07-19 18:39:45