如果我使用fstream
标记重新打开包含数据的std::ios::trunc
而未关闭流程,而我的流程持有boost::interprocess::file_lock()
会怎样?
我是否应该期望操作系统维护我的文件锁定?或者,当文件关闭时,操作系统是否会透明地取消注册锁定? Windows和POSIX都将受到赞赏。
修改
我的主要目标是截断配置文件并重写它。该文件的第二个目的是防止其他等效守护进程启动。所以,如果有另一种方法使用boost或c ++ stl截断文件而不关闭它,我全都听见了:D
答案 0 :(得分:0)
根据经验:使用std::fstream::close
后跟std::fstream::open
重新打开文件将透明地删除锁定(使用linux命令lsof
测试),执行此操作后需要重新获取锁定使用boost::interprocess
。
所以,只要你按照open-file后跟acquire-lock,你应该没问题。
您可能希望在Windows中运行相同的测试。