如何打开文件并将其锁定在C?

时间:2015-07-01 07:09:10

标签: c winapi

如果我使用以下代码打开文件:

FILE *file = fopen("D:\\1.mp4", "rb");

这不会锁定文件,例如我可以使用记事本打开此文件并写入!

那么有没有办法可以确保不允许其他应用程序写入此文件,或者我应该使用WinAPI来完成此任务?

2 个答案:

答案 0 :(得分:4)

您要使用的Windows功能是“共享模式”。您可以使用_fsopen功能进行设置。要拒绝写访问,请使用_SH_DENYWR作为第三个参数。

答案 1 :(得分:3)

在C中,显然没有办法做到这一点,尽管POSIX有一些方法可以做到这一点。查看here了解详情。

在WINAPI中,使用CreateFile相当简单(但最终得到的是Windows句柄,而不是FILE指针):

HANDLE hFile = CreateFile("D:\\1.mp4", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);