读取/ proc / PID / maps时fgets陷入无限循环

时间:2014-10-17 11:59:02

标签: c infinite-loop fgets

我正在尝试从/proc/<PID>/maps文件中读取内容。我在阅读之前ptrace(PTRACE_ATTACH, <PID>)(因此,该过程应该被暂停)。

读取的代码如下所示:

while(fgets(line_buf, BUFSIZ, maps_fd) != NULL){ ... } 

但它没有结束(无限循环)。我做了一个printf line_buf,结果发现它读取已读过的行。

问题:什么可以改变我的地图文件? (如果有什么改变的话)

如果文件没有被别的东西改变,为什么fgets读取它已读过的行?

1 个答案:

答案 0 :(得分:1)

我现在找不到引用,但这是某些内核版本中已知的错误/回归。问题几乎肯定是你在一个有缺陷的内核上运行,并且需要用一个较少错误的内核替换它。如果我能找到问题报告的链接,我会添加它。