我正在 Linux 内核 2.4 中实现类似 FTP 的协议(protocol)(家庭作业),我的印象是,如果打开一个文件进行写入,则任何后续尝试由另一个线程打开它的操作都会失败,直到我真正尝试过它并发现它经历了。
如何防止这种情况发生?
PS:我使用 open() 打开文件。
PS2:我需要能够访问现有文件。我只是想防止它们被同时写入。
最佳答案
您可以保留打开文件的列表,然后在打开文件之前检查它是否已被另一个线程打开。这种方法的一些问题是:
您将需要使用同步原语(例如互斥体)来确保列表是线程安全的。
程序完成处理后,需要将文件从列表中删除。
关于c - 防止线程写入同一文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3040637/