3

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

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

进程完成执行后如何查看此文件?

4

3 回答 3

5

在程序结束时抛出此调用将在程序退出前的最后一刻system()打印到标准输出。/proc/[pid]/status

#include <stdlib.h>

int main() {
        system("cat /proc/$PPID/status");
        return 0;
}

+1 用于外部程序,例如valgrind. 您可以使用调试工具捕获程序的退出,并在不修改程序的情况下检查完整的统计信息。

于 2012-04-10T18:10:35.420 回答
4

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

如果您希望提高应用程序的性能和内存占用,您可能需要研究valgrind及其类似 cachegrind 的朋友。

于 2012-04-10T18:07:05.630 回答
1

/proc/$pid/仅在进程运行时存在。如果您真的想在流程完成后查看它(而且我看不出您会在 VmPeak 之外获得什么),您可以在流程退出前不久复制它。

于 2012-04-10T18:08:43.813 回答