c++ - tellp 与文件锁定一起使用是否安全

标签 c++ c boost file-locking

boost 文件锁定(可共享和作用域 file_locks)的一般策略,以及我认为一般的文件锁定,是这样的:

  1. 打开
  2. 对文件内容进行操作
  3. 解锁
  4. 关闭文件

但是,我将打开文件进行追加,并想调用 tellp 来查看我的位置。在上述情况下这样做安全吗?一旦文件在锁定之前打开并因此可能不 protected ,文件指针不会被设置吗?如果是这样,是否有一个标准的习语来解决这个问题?

最佳答案

这可能是特定于环境的,但在大多数平台上:

当打开文件进行追加时,文件指针会在每次写入前立即调整。因此,如果您在锁定文件之前使用 tellp ,它可能不会告诉您新添加的字节将去哪里,但是您不应该有两个使用锁定的进程仍然以某种方式附加相同范围的字节。

关于c++ - tellp 与文件锁定一起使用是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4673783/

相关文章:

c++ - 正则表达式从 netsh wlan 获取 MAC 地址

c++ - 带有 MinGW 4.8 的 Windows 上的模板 undefined reference

c++ - Linux:C/C++ 标准库静态与动态链接

c++ - boost fast_pool_allocator 有时会请求大量分配

c - Typedef 参数和函数

在循环中不断检查共享内存是否发生变化

c++ - 为什么 uint128_t 没有 uint128_t 的移位重载?

c++ - 使用 OpenCV 进行图像捕获 - 选择超时错误

c++ - 在 vista32bit 上出现错误 C2039,而相同的代码在 XP 上可以正常工作

C++动态加载类