2
我試圖從/proc/<pid>/status
文件中讀取信息(以獲取使用的內存)。文件/ proc/<pid>上的實時更新/打開時的狀態
要做到這一點,我在讀模式打開文件:
file = fopen("/proc/self/status", "r");
此步驟後,得到的記憶,我閱讀了「VmRSS」開頭的行。
我的問題是這樣的:
每次我讀到這條線,這是相同的值,即使文件已經改變。
我這樣做是爲了獲得我的程序的實時內存使用情況。所以我打電話fopen()
1次, ,然後我打電話fseek()
去當我需要更新信息時我的文件的開始。
char line[128];
fseek(file, 0, SEEK_SET);
while (fgets(line, 128, file) != NULL)
{
//...
}
但是,文件沒有更新,除非我重新打開它。出於性能原因,我不想重新打開它。
我試圖將「r」更改爲「r +」(根據fopen()的文檔有一個「打開文件以進行更新」),但在這種情況下fopen返回NULL。
所以我的問題:
你對我有多麼的程序可以打開一個文件,並查看更改從僅使用一個呼叫fopen()
另一個程序(這裏的內核)所做的任何想法?
注:
我使用Ubuntu 12.04
感謝您的信息。 – Krozark
@Krozark歡迎您 –