使用std:fstream如何拒绝对文件的访问(读写)

sof*_*ofr 13 c++

如何拒绝访问我用fstream打开的文件?我想在使用fstream读取/写入文件时无法访问该文件?

Hal*_*ali 15

你无法使用标准的fstream,你必须使用平台特定的功能.

在Windows上,您可以使用CreateFile()LockFileEx().在Linux上,有flock(),lockf()fcntl()(正如之前的评论者所说).

如果您使用的是MSVC,则可以将第三个参数传递给fstream的构造函数.请参阅Visual Studio 6更高版本的文档.当然它不适用于其他编译器和平台.

你为什么要锁定其他人呢?可能有更好的解决方案......


Dav*_*kes 6

扩展Casebash的评论:

在Windows中打开一个文件,以便其他进程无法写入它使用

file.rdbuf()->open(path, std::ios_base::app, _SH_DENYWR);
Run Code Online (Sandbox Code Playgroud)

_SH_DENYRW将拒绝读写访问