Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中查找保存文件的进程_C_Linux - Fatal编程技术网

如何在C中查找保存文件的进程

如何在C中查找保存文件的进程,c,linux,C,Linux,我想找出哪些进程在C代码(Linux)中保存一些文件 我想到的一种方法是查看所有正在运行的进程的proc//fd。 但是,由于扫描所有进程的fd文件下的所有文件,这将花费很长时间 你能给出另一种更轻量级的方法吗 提前感谢。枚举/proc下的所有数字伪文件,然后检查每个伪文件的fd/目录,这是执行此操作的标准方法。这是像“lsof”这样的实用程序的典型实现方式。所有这些数据都保存在内存中,因此在大多数情况下访问这些数据应该足够快。lsof如何计算其输出?这是一种有用的方法,但我想在我的应用程序中使

我想找出哪些进程在C代码(Linux)中保存一些文件

我想到的一种方法是查看所有正在运行的进程的
proc//fd
。 但是,由于扫描所有进程的
fd
文件下的所有文件,这将花费很长时间

你能给出另一种更轻量级的方法吗


提前感谢。

枚举/proc下的所有数字伪文件,然后检查每个伪文件的fd/目录,这是执行此操作的标准方法。这是像“lsof”这样的实用程序的典型实现方式。所有这些数据都保存在内存中,因此在大多数情况下访问这些数据应该足够快。

lsof如何计算其输出?这是一种有用的方法,但我想在我的应用程序中使用这些功能。`这需要很长时间。`为什么?你做了一些测试吗?我还没有测试。但我所描述的方式会导致对文件系统的大量访问,即使几乎所有进程都与文件无关。访问文件系统是通过内核完成的,所以我预测查看
/proc
会导致很大的开销。目前我正在开发的应用程序速度太慢,我将采用更轻量级的解决方案。当我建议
lsof
时,我的意思是:
你读过源代码了吗?