如何在进程完成执行后查看/ proc / [pid] / status的内容?

时间:2012-04-10 17:48:16

标签: linux performance process statistics

我想查看一个小型C程序的统计信息,但这是一个开始和结束的小程序。 (不是一些长时间运行的程序)。我希望在访问内存,缓存命中,上下文切换等方面改进这个程序。

/proc/[pid]/status中的参数很棒,但在执行后我找不到查看它们的方法。

如何在proccess执行完毕后看到这个文件?

3 个答案:

答案 0 :(得分:4)

在程序结束时抛出此system()来电,会在程序退出前的最后一刻将/proc/[pid]/status打印到stdout。

#include <stdlib.h>

int main() {
        system("cat /proc/$PPID/status");
        return 0;
}
对于valgrind等外部程序,

+1。您可以使用debugging utils捕获程序的退出并检查完整的统计信息,而无需修改程序。

答案 1 :(得分:3)

你做不到。 proc文件系统是内核数据结构的接口。一旦过程消失,相关信息也就消失了。

如果您希望改善应用程序的性能和内存占用,您可能需要调查valgrind及其像cachegrind这样的朋友。

答案 2 :(得分:1)

/proc/$pid/仅在进程运行时存在。如果你真的想在流程结束后看到它(我看不到你会超越VmPeak会有什么),你可以在流程退出前不久复制它。