是否有可能以编程方式找出已打开linux上给定文件描述符引用的对象的进程数?
如果是,如果它是文件,管道或其他什么有什么区别吗?
答案 0 :(得分:2)
奇怪的是,fuser
程序及其输出已由POSIX标准化。您可以使用popen
调用它并解析其输出。除非用户具有特权,否则列表将不完整,并且这种方法本身就容易发生竞争。
在Linux上,您可以读取/proc/*/fd
目录的内容并检查是否引用了相同的文件描述符。 (关于特权和种族的相同评论适用。)如果您对引用同一文件 description 对象感兴趣(它们不仅共享同一文件,而且因为它们是由{创建的,因此也是相同的文件偏移量) {1}} / dup
或dup2
),您必须使用fork
系统调用进一步过滤此内容。