gpt4 book ai didi

c - 我如何判断文件是否在 Linux 的 C 中的其他地方打开?

转载 作者:IT王子 更新时间:2023-10-29 00:31:25 25 4
gpt4 key购买 nike

如何判断一个文件是否在 C 中打开?我认为更技术性的问题是如何检索对现有文件的引用数量,并根据该信息确定打开文件是否安全。

我正在实现的想法是一个文件队列。你转储一些文件,我的代码处理这些文件。在生产者关闭文件描述符之前,我不想开始处理。

一切都在 linux 中完成。

谢谢,陈子

最佳答案

挖掘该信息需要大量工作(您必须搜索整个/proc/*/fd你最好选择以下任何一种:

  • 保存到临时文件然后重命名。将文件写入临时文件名或目录,完成写入后,将其重命名为应用程序读取它们的目录。重命名是原子操作,因此当文件存在时,您知道它可以安全读取。
  • 可能是上面的一个变体,当您完成文件 foo 的编写时,您会创建一个名为 foo.finished 的空文件。您在处理文件时寻找 *.finished 的存在。
  • 在写入时锁定文件,这样读取文件就会阻塞,直到写入者解锁它。查看 flock/lockf 函数,尽管它们是建议性锁,因此读者和作者都必须锁定,并尊重这些锁。

关于c - 我如何判断文件是否在 Linux 的 C 中的其他地方打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1087204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com