【问题标题】:Can I fopen with shared read write?我可以使用共享读写打开吗?
【发布时间】:2013-07-15 23:47:39
【问题描述】:

我可以在 C 中创建文件吗 可以在用户模式下随时访问吗?

我是说喜欢

    zwcreatefile(...shareread||sharewrite...)

我可以在用户模式下使用 fopen 吗?

我希望我的日志文件可以共享读写,这样当我的程序运行时,我仍然可以打开它并查看日志,而我的程序仍在写入那里。

【问题讨论】:

  • 您可以使用O_APPEND 多次打开文件。所有写入都将在最后。这是使用open 而不是fopen
  • open is int __cdecl(const char* filename,int flags) 文件句柄在哪里?我的意思是,你能提供一个小例子吗?我从没听说过 open :-O
  • 您是否尝试过使用_fsopen()
  • 我现在正在尝试,但是这里发生了一些奇怪的事情:(我使用 2 个文件,在 1 个文件中(我们称之为 file1)它执行 fprintf(); 并且第二个文件是空的...我做了同样的事情,但它是空的,我删除了第一个文件并删除了写入它的函数,但 file2 仍然是空的。:((
  • 谢谢你,我仍然不知道如何或为什么,但我用 _fsopen 解决方案做到了,谢谢你:)

标签: c windows file fopen


【解决方案1】:
#include <stdlib.h>
#include <stdio.h>
#include <share.h>
#include <stdlib.h>

FILE *FPlogHigh; 

int main(int argc, char **argv)
{   
    FPlogHigh = _fsopen("filename.txt", "a+",_SH_DENYWR);
    if (FPlogHigh)
    {
        fprintf(FPlogHigh,"\nHello log started\n");
        fclose(FPlogHigh);
    }
    ...
}

每次我想在那里写文件时,我都会打开和关闭文件句柄。它允许我从任何其他程序访问日志文件。 当这个 1 正在写入日志文件时,我也无法更改其他程序中的日志 但当它关闭 FCLOSE();我可以编辑 a+ 代表每次打开时追加写入文件的末尾。

【讨论】:

  • 注意,_fsopen 仅适用于 Windows。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多