Eu tenho um pequeno problema com um dos meus projetos.
Tenho tentado encontrar um exemplo bem documentado de uso de memória compartilhada, fork()
mas sem sucesso.
Basicamente, o cenário é que quando o usuário inicia o programa, eu preciso armazenar dois valores na memória compartilhada: current_path que é um char * e um file_name que também é char * .
Dependendo dos argumentos do comando, um novo processo é iniciado fork()
e esse processo precisa ler e modificar a variável current_path armazenada na memória compartilhada enquanto a variável file_name é somente leitura.
Existe um bom tutorial sobre memória compartilhada com código de exemplo (se possível) que você pode me indicar?
shmget()
et al. e também a mmap()
abordagem pura com MAP_ANON
(aka MAP_ANONYMOUS
) - embora MAP_ANON
não seja definida pelo POSIX. Há também POSIX shm_open()
e shm_close()
para gerenciar objetos de memória compartilhada. [... continuou ...]
shm_unlink()
), enquanto os mecanismos que usam mmap()
requerem um arquivo e MAP_SHARED
persistir os dados (e MAP_ANON
impede a persistência). Há um exemplo completo na seção Racional da especificação de shm_open()
.