如果我使用以下代码打开文件:
FILE *file = fopen("D:\\1.mp4", "rb");
这不会锁定文件,例如我可以使用记事本打开此文件并写入!
那么有没有办法可以确保不允许其他应用程序写入此文件,或者我应该使用WinAPI来完成此任务?
答案 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);