2012-04-10 17 views
2

我想查看一個小C程序的統計信息,但它是一個開始和結束的小程序。 (不是一些很長時間運行的程序)。我想從訪問內存,緩存命中,上下文切換等方面來改進這個程序。如何在進程完成執行後看到/ proc/[pid]/status的內容?

/proc/[pid]/status中的參數很好,但我找不到在執行後看到它們的方法。

如何在完成執行過程後看到該文件?

回答

4

折騰這個system()在程序結束時調用將打印/proc/[pid]/status在退出程序之前的最後一刻輸出stdout。

#include <stdlib.h> 

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

+1爲外部程序如valgrind。您可以通過調試utils來捕獲程序的退出並檢查完整的統計信息,而無需修改程序。

+0

我正在考慮做類似'./myapp; cat/proc /''pidof myapp''/status',嘗試'&','&&','|','||'其中';'是所有嘗試使進程(myapp和cat)只有一個,然後在兩者都完成時被破壞。 (瘋狂的理論) – jperelli 2012-04-10 18:36:06

+2

bash將按順序執行這些命令 - 所以你不能只是說「我希望這個在*我的命令完成之前運行正確* – lunixbochs 2012-04-10 20:40:30

3

你不能。 proc文件系統是內核數據結構的一個接口。一旦過程結束,相關信息也不見了。

如果您希望提高應用程序的性能和內存佔用量,您可能需要調查valgrind及其朋友,如cachegrind。

1

/proc/$pid/只在進程運行時才存在。如果你真的想在流程結束後看到它(並且我沒有看到你會超越VmPeak),那麼你可以在流程退出前立即複製它。

相關問題