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