我可以访问std :: [io] fstream底层的文件描述符吗?

时间:2013-01-28 16:40:55

标签: c++ locking std fstream

  

可能重复:
  Getting a FILE* from a std::fstream

我需要访问文件描述符,以便我可以使用flock()(或fcntl(),我不在乎)系统调用来创建和发布咨询文件锁。但我看不出任何方法可以实现它。也没有任何其他方法没有可怕的黑客的味道。

有什么建议吗?我错过了一种实现文件锁定的明显方法吗?

3 个答案:

答案 0 :(得分:0)

似乎我无法访问[io] fstream中的基础文件描述符。似乎也没有让我从现有文件描述符构建[io] fstream的c'tors。这种锁定问题的方法显然是不可行的。

我找到了解决锁定问题的另一个可行解决方案,但是:我将使用boost :: interprocess同步机制(特别是boost :: interprocess :: sharable_lock)来实现相同目的。见http://www.boost.org/doc/libs/1_52_0/doc/html/interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.sharable_upgradable_mutexes.sharable_upgradable_locks

在我实现这个之后,我将报告缓解/难度和其他指示。

答案 1 :(得分:0)

使用<mutex>和C ++中提供的任何其他线程功能,而不是恢复到C世界。如果您无权访问C ++ 11编译器,请升级时间。

答案 2 :(得分:-1)

How do I lock files using fopen()?

我相信这个问题会告诉你如何使用flock()(看看第一个答案)。请注意,这是答案而不是评论的唯一原因是因为我找不到评论按钮:)