如何判断文件是否在Linux上的其他位置打开?

Cra*_*enz 7 c linux file-io

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

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

一切都在linux中完成.

谢谢,陈兹

nos*_*nos 5

挖掘这些信息是很多工作(你必须搜索thorugh/proc/*/fd你最好用以下任何一个:

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