0

可能重复:
从 std::fstream 获取 FILE*

我需要访问文件描述符,以便我可以使用flock()(或fcntl(),我不在乎)系统调用来创建和释放咨询文件锁。但我看不出有什么办法。也没有任何没有可怕黑客气味的替代方法。

有什么建议吗?我是否缺少实现文件锁定的明显方法?

4

3 回答 3

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

在我实现了这个之后,我将报告难易度和额外的指针。

于 2013-01-28T18:35:38.383 回答
0

与其回到 C 世界,<mutex>不如使用 C++ 中可用的任何其他线程功能。如果您无法访问 C++11 编译器,那么是时候升级了。

于 2013-01-28T18:40:00.270 回答
-1

如何使用 fopen() 锁定文件?

我相信这个问题向您展示了如何使用flock()(查看第一个答案)。请注意,这是答案而不是评论的唯一原因是因为我找不到评论按钮:)

于 2013-01-28T17:17:16.527 回答