c - 防止线程写入同一文件

标签 c linux networking file-io

我正在 Linux 内核 2.4 中实现类似 FTP 的协议(protocol)(家庭作业),我的印象是,如果打开一个文件进行写入,则任何后续尝试由另一个线程打开它的操作都会失败,直到我真正尝试过它并发现它经历了。

如何防止这种情况发生?

PS:我使用 open() 打开文件。

PS2:我需要能够访问现有文件。我只是想防止它们被同时写入。

最佳答案

您可以保留打开文件的列表,然后在打开文件之前检查它是否已被另一个线程打开。这种方法的一些问题是:

  • 您将需要使用同步原语(例如互斥体)来确保列表是线程安全的。

  • 程序完成处理后,需要将文件从列表中删除。

关于c - 防止线程写入同一文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3040637/

相关文章:

c - 每当我运行 C 代码时都会返回段错误

c - 与互斥锁同步文件

linux - 控制台/shell 缓存/恢复如何工作?

linux - 为什么 ~ 在 awk 中用双引号引起语法错误

java - 我的 java UI 单元测试将焦点集中在 GNOME 桌面上的原因可能是什么

networking - docker : How to find the network my container is in?

c - 为什么我需要 glut.h、glut32.lib、glut32.dll ALL 来编译 openGL 程序?

ios - 将中间带有空终止字符的 C unsigned char 数组转换为 Objective-C NSString

python - Scapy 数据包嗅探器触发对每个嗅探数据包的操作

python - 让 Django 与 Apache 一起工作