0

如果我在不关闭进程的情况下使用标志重新打开其中包含数据的数据并且我的进程持有一个会发生什么?fstreamstd::ios::truncboost::interprocess::file_lock()

我应该期望操作系统保持我的文件锁定吗?或者当文件关闭时操作系统会透明地取消注册锁?Windows 和 POSIX 经验将不胜感激。

编辑

我的主要目标是截断配置文件并重写它。该文件的第二个目的是防止其他等效的守护进程启动。因此,如果有另一种方法使用 boost 或 c++ stl 来截断文件而不关闭它,我会全神贯注:D

4

1 回答 1

0

std::fstream::close经验上:使用后跟重新打开文件std::fstream::open将透明地删除锁,(如用linux命令测试过的那样lsof)执行此操作后,需要使用重新获取锁boost::interprocess

所以,只要你按照打开文件后跟获取锁,你应该没问题。

您可能想在 Windows 中运行相同的测试。

于 2012-03-07T15:12:02.770 回答