如何判断一个文件是否在C中打开? 我认为更多的技术问题是如何检索现有文件的引用数量,并确定该信息是否可以安全地打开。
我正在实现的想法是一个文件队列。 你转储一些文件,我的代码处理文件。 我不想开始处理,直到生产者closures文件描述符。
一切都在linux中完成。
谢谢,Chenz
挖出信息是很多工作(你必须搜索thorugh / proc / * / fd你会更好的与任何:
我不认为有什么办法可以在纯C中做到这一点(它不会跨平台)。
如果您知道提前使用的文件,则可以使用inotify在打开时通知他们。
C有处理文件的功能,但没有太多的信息。 在可移植的C中,你可以做的唯一的事情就是试图以所需的方式打开文件,看看它是否工作。
一般你不能这样做 variuos的原因(例如,你不能说,如果该文件是与另一个用户打开)。
如果你可以控制打开文件的进程,并试图通过锁定文件来避免冲突(为了做到这一点,Linux上有很多库)
使用lsof命令。 (列出打开的文件)。
如果你控制生产者和消费者,你可以使用flock()的lockf()来锁定文件。
在大多数发行版都有lsof命令,它显示所有当前打开的文件,如果你的文件在同一目录中或者有一些可识别的名称模式,你可以输出它的输出。
打开一个shell并键入
man ftrylockfile
您打开文件,然后将其传递给此函数,如果返回值不为零,则文件已被锁定,否则将锁定文件并返回0。
那么当你完成你的funclockfile()它。