Quero extrair as informações de /proc/pid/maps
, como: o endereço inicial, o endereço final e a permissão.
No entanto, para fins de aprendizado, quero usar a chamada de sistema de baixo nível, como: open
, read
e lseek
.
Estou confuso sobre como obter as informações de que preciso. Existem alguns desafios que encontrei:
- Como ler o arquivo inteiro usando
read()
?
No momento, estou usando while((n = read(fd, buf, BUFSIZ)) > 0)
, para ler o arquivo, mas aparentemente ele lê em lote múltiplo, aumentando o BUFSIZ
*2, não resolve o problema.
- Estou tentando grep o endereço inicial, lendo o caractere um por um até encontrar o
-
separador e, em seguida,lseek
para o primeiro caractere da linha e usoread
para obter o endereço inicial. Funciona bem na primeira iteração, mas atrapalha na segunda iteração dowhile((n = read(fd, buf, BUFSIZ)) > 0)
.
Qual é a melhor maneira de extrair as informações?