Visual studio 2015 fopen用于书写,但不是专用的

Visual studio 2015 fopen用于书写,但不是专用的,visual-studio-2015,Visual Studio 2015,我想使用fopen(“file”,“w”)打开一个文件进行写入,但不是独占的。也就是说,我想让另一个进程在文件仍处于打开状态时读取该文件 请注意,我有一个冲洗后,每一行,所以我不会错过任何东西。当其他进程从文件中读取时,写入将处于空闲状态 文档中没有提到排他性,但实验表明它是排他性的 有办法吗?共享文件访问是操作系统特有的功能。fopen过于通用,不提供这种控制。你需要使用更具体的东西。如果您使用的是microsoft平台(假设您标记为VS 2015),您可以使用-他们有第三个参数来指定共享访问

我想使用
fopen(“file”,“w”)
打开一个文件进行写入,但不是独占的。也就是说,我想让另一个进程在文件仍处于打开状态时读取该文件

请注意,我有一个冲洗后,每一行,所以我不会错过任何东西。当其他进程从文件中读取时,写入将处于空闲状态

文档中没有提到排他性,但实验表明它是排他性的


有办法吗?

共享文件访问是操作系统特有的功能。fopen过于通用,不提供这种控制。你需要使用更具体的东西。如果您使用的是microsoft平台(假设您标记为VS 2015),您可以使用-他们有第三个参数来指定共享访问

_fsopen("file", "w", _SH_DENYWR);
这将打开文件进行写入,并允许其他人从中读取(但不写入)

参数
shflag
是一个常量表达式,包含以下内容之一: 以下清单常量在
Share.h
中定义

  • 术语定义
  • _SH_COMPAT为16位应用程序设置兼容模式
  • _SH_DENYNO允许读写访问
  • _SH_DENYRD拒绝对该文件的读取访问
  • _SH_DENYRW拒绝对文件的读写访问
  • _SH_DENYWR拒绝对文件的写入访问

其他OS /平台也支持FSON的一些变体。

这是C还是C++应用程序?您的目标应用程序环境是Windows还是Win/RT或其他?您的目标是什么标准(C99、C++11等)?此目标是哪种编程语言?我正在Windows XP DOS command.com中使用旧版本的Borland C。所以我怀疑任何现代形式的fopen是否会起作用。(对不起,我没有在前面提到……我只是没想到)。