我想查看一個小C程序的統計信息,但它是一個開始和結束的小程序。 (不是一些很長時間運行的程序)。我想從訪問內存,緩存命中,上下文切換等方面來改進這個程序。如何在進程完成執行後看到/ proc/[pid]/status的內容?
/proc/[pid]/status
中的參數很好,但我找不到在執行後看到它們的方法。
如何在完成執行過程後看到該文件?
我想查看一個小C程序的統計信息,但它是一個開始和結束的小程序。 (不是一些很長時間運行的程序)。我想從訪問內存,緩存命中,上下文切換等方面來改進這個程序。如何在進程完成執行後看到/ proc/[pid]/status的內容?
/proc/[pid]/status
中的參數很好,但我找不到在執行後看到它們的方法。
如何在完成執行過程後看到該文件?
折騰這個system()
在程序結束時調用將打印/proc/[pid]/status
在退出程序之前的最後一刻輸出stdout。
#include <stdlib.h>
int main() {
system("cat /proc/$PPID/status");
return 0;
}
+1爲外部程序如valgrind
。您可以通過調試utils來捕獲程序的退出並檢查完整的統計信息,而無需修改程序。
你不能。 proc文件系統是內核數據結構的一個接口。一旦過程結束,相關信息也不見了。
如果您希望提高應用程序的性能和內存佔用量,您可能需要調查valgrind及其朋友,如cachegrind。
/proc/$pid/
只在進程運行時才存在。如果你真的想在流程結束後看到它(並且我沒有看到你會超越VmPeak),那麼你可以在流程退出前立即複製它。
我正在考慮做類似'./myapp; cat/proc /''pidof myapp''/status',嘗試'&','&&','|','||'其中';'是所有嘗試使進程(myapp和cat)只有一個,然後在兩者都完成時被破壞。 (瘋狂的理論) – jperelli 2012-04-10 18:36:06
bash將按順序執行這些命令 - 所以你不能只是說「我希望這個在*我的命令完成之前運行正確* – lunixbochs 2012-04-10 20:40:30