1
我試圖從/proc/<PID>/maps
文件中讀取。在閱讀之前我(ptrace(PTRACE_ATTACH, <PID>)
)(因此,該過程應該被暫停)。fgets在讀取/ proc/PID/maps時陷入無限循環
讀取看起來像這樣的代碼:
while(fgets(line_buf, BUFSIZ, maps_fd) != NULL){ ... }
,但它沒有結束(無限循環)。我做了一個printf line_buf
,然後fgets它讀取已讀取的行。
問題:什麼可以改變我的地圖文件? (如果有什麼改變的話)
如果文件沒有被別的東西改變,爲什麼fgets已經讀取了它的行?
好吧,我試着更新到了最新的內核'[alexandernst @ stupidbox 0〜] $ UNAME -a Linux的stupidbox 3.16.4-1-ARCH#1 SMP PREEMPT週一10月06日8時22分27秒CEST 2014 x86_64的GNU/Linux「,但我仍然一樣。那個bug已經修補了嗎? – alexandernst 2014-10-17 13:35:20
我當然這麼認爲。它是否僅在追蹤時發生?也許你在用'ptrace'做錯了什麼。或者這可能是一個「特定於跟蹤」的錯誤。 – 2014-10-17 15:09:17
呃,實際上忘記了,它在升級 – alexandernst 2014-10-17 16:39:00