文件描述符引用的对象的引用计数

标签 c linux posix

是否可以以编程方式找出已打开 Linux 上给定文件描述符引用的对象的进程数?

如果是,如果是文件、管道或其他什么有什么区别吗?

最佳答案

奇怪的是,fuser 程序及其输出已由 POSIX 标准化。您可以使用 popen 调用它并解析其输出。除非用户具有特权,否则列表将不完整,并且这种方法本质上容易出现竞争。

在 Linux 上,您可以读取 /proc/*/fd 目录的内容并检查是否引用了同一文件描述符。 (关于权限和竞争的相同评论适用。)如果您对同一文件描述对象的引用感兴趣(它们不仅共享相同的文件,而且还共享相同的文件偏移量,因为它们是由 dup/dup2fork),您必须使用 kcmp 系统调用进一步过滤此内容。

关于文件描述符引用的对象的引用计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45022747/

相关文章:

c - 如何在套接字编程c中从telnet客户端读取服务器上的参数

java - 来自进程 id pid 的 LInux java 类

php - Web服务器触发ssh shell脚本

c - 用户输入特定数量的整数后如何停止 scanf 循环?

c - 在链表中的另外两个节点之间插入节点

python - 从python访问没有-fPIC编译的库

c - .so 库名称是否有更清晰的正则表达式?

c++ - 父不等待工作线程完成任务

c - 为什么 POSIX 要求 CHAR_BIT==8?

c - 为什么 "1"存储在所有数组索引位置?