我想查看一个小型C程序的统计信息,但这是一个开始和结束的小程序。 (不是一些长时间运行的程序)。我希望在访问内存,缓存命中,上下文切换等方面改进这个程序。
/proc/[pid]/status
中的参数很棒,但在执行后我找不到查看它们的方法。
如何在proccess执行完毕后看到这个文件?
答案 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会有什么),你可以在流程退出前不久复制它。