如何知道两个C程序共享哪些输入文件?

麦克风

在Linux中执行两个C程序时,可以使用来打印它们的本地/私有文件描述符fileno()这意味着,当我并行运行两个独立程序并fileno()在每个程序中进行打印时,打开的第一个文件将打印3个,打开的第二个文件将打印4个,依此类推。

因此,通过使用fileno(),不可能知道它们之间共享了哪些输入文件。

有什么方法可以打印两个C程序之间共享的输入文件名?

采用

readlink /proc/<pid>/fd/* | sort -u > /tmp/process-<pid>.out

用PID的进程创建一个文件并列出所有文件的列表<pid>然后使用comm(1)查找公用文件,如下所示:

comm -12 /tmp/process-<pid1>.out /tmp/process-<pid2>.out

请注意,这将列出这些程序共享的所有文件。

如果您知道程序使用的特定文件描述符是例如3,4,5,9,11,12,则将第一个命令替换为:

readlink /proc/<pid>/fd/{3,4,5,9,11,12} | sort -u > /tmp/process-<pid>.out

如果您不知道文件描述符,并且想假设所有可供读取的文件描述符(包括stdin)都是输入文件,则必须通过阅读来做一些更聪明的事情/proc/<pid>/fdinfo/<file-descriptor>,该命令会打印一个flags字段,其中包含该信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

哪些设置会影响已编译的Java .class文件的布局?你怎么知道两个编译类是否相等?

使用共享代码为两个应用程序进行文件组织

如何在heroku的两个不同应用程序之间共享worker?

在两个C#程序集之间共享代码

ngModel在两个输入字段之间共享数据

如何在两个事件处理程序之间共享数据?

在两个容器之间共享文件

如何使两个应用程序模块共享相同的实体缓存?

如何在两个沙盒应用程序之间共享首选项文件?

如何共享两个Android应用程序的GCM服务?

在C中的两个文件之间共享功能实现

如何获取两个(或更多)控件以共享同一事件处理程序

如何执行循环以处理两个输入文件

如何知道两个进程之间的共享内存?

如何找出git分支中更改了哪些文件(不是两个分支之间的差异)

Windows 10如何使两个相同的帐户具有对文件/程序的共享访问权限

在两个文件中,哪些人的名字以a结尾?

我如何知道哪些程序使用特定文件?

给定两个项目中的文件列表,如何查看哪些文件相同

如何从两个输入文件获得匹配的记录,而awk中两个文件的长度不同?

如何通过双引导在两个操作系统之间共享快照程序配置?

同步两个 azure vm 要排除哪些文件?

如何在两个应用程序之间共享数据

如何在两个 asp.net 应用程序之间共享身份验证

AngularJS。如何在两个应用程序之间共享单个服务

如何让程序知道两个项目正在相互接触?蟒蛇/tkinter

Spring Secure - 如何在两个应用程序之间共享 bcrypt?

运行需要两个输入文件的程序的 shell 脚本

在 C 中的两个文件之间共享一个变量