我想看一个小 C 程序的统计数据,但它是一个开始和结束的小程序。(不是一些长时间运行的程序)。我想在访问内存、缓存命中、上下文切换等方面改进这个程序。
中的参数/proc/[pid]/status
很棒,但我找不到执行后查看它们的方法。
进程完成执行后如何查看此文件?
我想看一个小 C 程序的统计数据,但它是一个开始和结束的小程序。(不是一些长时间运行的程序)。我想在访问内存、缓存命中、上下文切换等方面改进这个程序。
中的参数/proc/[pid]/status
很棒,但我找不到执行后查看它们的方法。
进程完成执行后如何查看此文件?
在程序结束时抛出此调用将在程序退出前的最后一刻system()
打印到标准输出。/proc/[pid]/status
#include <stdlib.h>
int main() {
system("cat /proc/$PPID/status");
return 0;
}
+1 用于外部程序,例如valgrind
. 您可以使用调试工具捕获程序的退出,并在不修改程序的情况下检查完整的统计信息。
你不能。proc 文件系统是内核数据结构的接口。一旦该过程消失,相关信息也消失了。
如果您希望提高应用程序的性能和内存占用,您可能需要研究valgrind及其类似 cachegrind 的朋友。
/proc/$pid/
仅在进程运行时存在。如果您真的想在流程完成后查看它(而且我看不出您会在 VmPeak 之外获得什么),您可以在流程退出前不久复制它。