我正在尝试从/proc/<PID>/maps
文件中读取内容。我在阅读之前ptrace(PTRACE_ATTACH, <PID>)
(因此,该过程应该被暂停)。
读取的代码如下所示:
while(fgets(line_buf, BUFSIZ, maps_fd) != NULL){ ... }
但它没有结束(无限循环)。我做了一个printf line_buf
,结果发现它读取已读过的行。
问题:什么可以改变我的地图文件? (如果有什么改变的话)
如果文件没有被别的东西改变,为什么fgets读取它已读过的行?
答案 0 :(得分:1)
我现在找不到引用,但这是某些内核版本中已知的错误/回归。问题几乎肯定是你在一个有缺陷的内核上运行,并且需要用一个较少错误的内核替换它。如果我能找到问题报告的链接,我会添加它。