lseek doesn't seem to have any effect on /proc//maps. It should either work as expected, or fail. I've attached a test program which uses a doubling buffer policy to try to read the whole buffer. If it runs out of buffer, it simply allocates a new one, lseeks back to the beginning of the buffer, and tries again. However, the lseek seems to have no effect, because the next read continues from where the previous one (before the lseek) left off. Re-opening the file between each attempt works as expected. $ tm & $ ./readmap $! b7dea000-b7deb000 r-xp b7dea000 00:00 0 b7deb000-b7dec000 ---p b7deb000 00:00 0 b7dec000-b7ded000 r-xp b7dec000 00:00 0 b7ded000-b7dee000 ---p b7ded000 00:00 0 b7dee000-b7def000 r-xp b7dee000 00:00 0 b7def000-b7df0000 ---p b7def000 00:00 0 b7df0000-b7df1000 r-xp b7df0000 00:00 0 [...] $ gcc -o readmap -DREOPEN readmap.c $ ./readmap $! 08048000-08049000 r-xp 00000000 03:07 3868140 /home/jeremy/tm 08049000-0804a000 rwxp 00000000 03:07 3868140 /home/jeremy/tm b7ae6000-b7ae7000 r-xp b7ae6000 00:00 0 b7ae7000-b7ae8000 ---p b7ae7000 00:00 0 b7ae8000-b7ae9000 r-xp b7ae8000 00:00 0 b7ae9000-b7aea000 ---p b7ae9000 00:00 0 b7aea000-b7aeb000 r-xp b7aea000 00:00 0 b7aeb000-b7aec000 ---p b7aeb000 00:00 0 J