gpt4 book ai didi

C - fopen_s 无法写入由 CreateFile 创建的文件

转载 作者:太空宇宙 更新时间:2023-11-04 08:02:04 25 4
gpt4 key购买 nike

我有一个 main.c 函数和一个在其中调用的子函数。在子函数中,我使用了 CreateFile 来制作文件。然后,我使用 CloseHandle 关闭该文件的句柄。当我在那之后(在子函数内)使用 fopen_s 时,它可以在读取和写入模式下工作。但是,如果我之后在主函数中使用 fopen_s,我只能以读取权限打开,否则我会收到错误代码 13 - 权限被拒绝。我的CreateFile函数的参数如下:

hAppend = CreateFile(centralDataFilepath, // open central data file
FILE_APPEND_DATA, // open for writing
FILE_SHARE_READ|FILE_SHARE_WRITE, // allow multiple readers
NULL, // no security
OPEN_ALWAYS, // open or create
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no attr. template

我使用 fopen_s 如下:

FILE *f2;
errno_t errorCode3 = 0;
errorCode3 = fopen_s(&f2, centralDataFilepath, "a+");
fclose(f2);

我其实不知道CreateFile和这个有什么关系,好像退出子函数后文件的权限变了?我需要能够写入此文件,有人知道为什么我会收到此权限被拒绝的错误,以及如何修复它吗?

最佳答案

如所述here :

Files that are opened by fopen_s and _wfopen_s are not sharable.

函数失败,因为它无法锁定文件进行写入。您需要改用 _fsopen。试试这个:

f2 = _fsopen(centralDataFilepath, "a+", _SH_DENYNO);

关于C - fopen_s 无法写入由 CreateFile 创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45686940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com