Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
fgets在读取/proc/PID/maps时陷入无限循环_C_Infinite Loop_Fgets - Fatal编程技术网

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

fgets在读取/proc/PID/maps时陷入无限循环,c,infinite-loop,fgets,C,Infinite Loop,Fgets,我正在尝试读取/proc//maps文件。Iptrace(ptrace\u ATTACH,)在读取之前(因此,该进程应该被挂起) 读取的代码如下所示: while(fgets(line_buf, BUFSIZ, maps_fd) != NULL){ ... } 但它并没有结束(无限循环)。我做了一个printfline\u buf,结果显示fgets读取了它已经读取的行 问题:什么可能会更改我的地图文件?(如果有任何变化) 如果文件没有被其他内容更改,为什么fgets会读取它已经读取的行?我

我正在尝试读取
/proc//maps
文件。I
ptrace(ptrace\u ATTACH,)
在读取之前(因此,该进程应该被挂起)

读取的代码如下所示:

while(fgets(line_buf, BUFSIZ, maps_fd) != NULL){ ... } 
但它并没有结束(无限循环)。我做了一个
printfline\u buf
,结果显示fgets读取了它已经读取的行

问题:什么可能会更改我的地图文件?(如果有任何变化)


如果文件没有被其他内容更改,为什么fgets会读取它已经读取的行?

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

好的,我尝试更新到最新的内核
[alexandernst@stupidbox0s~]$uname-Linux stupidbox 3.16.4-1-ARCH#1 SMP抢占周一10月6日08:22:27 CEST 2014 x86_64 GNU/Linux
,但我还是得到了同样的结果。那只虫子修好了吗?我想是的。它是否只在跟踪时发生?也许您的
ptrace
有问题。或者它可能是一个特定于
ptrace
的bug。呃,事实上,忘记了,升级后它确实修复了。你能报告你使用的哪个版本坏了吗?这可能会使这个问题对将来找到它的人更有帮助。我当时使用的是3.15.2,更新到了3.16.4,所以这个bug肯定介于这两个版本之间。