Я пытаюсь читать файл /proc/<PID>/maps
. I ptrace(PTRACE_ATTACH, <PID>)
перед чтением (поэтому процесс должен быть приостановлен).fgets застревает в бесконечном цикле при чтении/proc/PID/maps
код, который читает, выглядит так:
while(fgets(line_buf, BUFSIZ, maps_fd) != NULL){ ... }
, но это не конец (бесконечный цикл). Я сделал printf line_buf
и, как выяснилось, отключил чтение строк, которые он уже прочитал.
Вопросы: Что может изменить файл моих карт? (если что-то меняет его)
Если файл не изменен чем-то другим, то почему строки fgets читают, что он уже прочитал?
ОК, я попробовал обновление до самого последнего ядра '[alexandernst @ stupidbox 0s ~] $ uname -a Linux stupidbox 3.16.4-1-ARCH # 1 SMP PREEMPT Mon Oct 6 08:22:27 CEST 2014 x86_64 GNU/Linux', но я все равно получаю то же самое. Была ли исправлена ошибка? – alexandernst
Я так и думал. Случается ли это только при отслеживании? Возможно, вы делаете что-то неправильно с 'ptrace'. Или, возможно, это ошибка «ptrace». –
Ух, на самом деле, забудьте, что это исправлено после обновления – alexandernst