如何判断文件是否在C中打开?我认为更技术性的问题是如何检索现有文件的引用数量,并确定是否可以安全打开该信息。
我正在实现的想法是文件队列。你转储一些文件,我的代码处理文件。我不想在生产者关闭文件描述符之前开始处理。
一切都在linux中完成。
谢谢, Chenz
答案 0 :(得分:5)
挖掘信息是很多工作(你必须搜索thorugh / proc / * / fd 你可以选择以下任何一个方式:
答案 1 :(得分:3)
我认为在纯C中没有任何办法可以做到这一点(它不会是跨平台的)。
如果您提前知道自己正在使用哪些文件,则可以在inotify打开时收到通知。
答案 2 :(得分:0)
C具有处理文件的功能,但对于获取有关它们的信息并不多。在便携式C中,您唯一能做的就是尝试以所需的方式打开文件,看它是否有效。
答案 3 :(得分:0)
通常你不能这样做(例如,你不能说这个文件是否是由另一个用户打开的)。
如果你可以控制打开文件的进程,你试图通过锁定文件来避免冲突(linux上有很多库就可以了)
答案 4 :(得分:0)
使用lsof命令。 (列出打开的文件)。
答案 5 :(得分:0)
如果您同时控制生产者和消费者,可以使用flock()的lockf()来锁定文件。
答案 6 :(得分:0)
在大多数发行版上都有lsof命令,它显示所有当前打开的文件,如果你的文件在同一个目录中或者有一些可识别的名称模式,你可以使用grep它的输出。