execve () e variáveis de ambiente
Eu tenho uma pergunta sobre como o Linux processa o ambiente varibales passado para execve ():
Sinopse para execve ():int execve (const char * nome do arquivo, char * const argv [], char * const envp []);
Antes de chamar execve (), alocamos a memória para armazenar envs / args a partir do mapeamento de memória do processo atual. Mas depois de execve (), todo o text / data / bss / stack do processo de chamada é sobrescrito pelo novo programa, e todos os mapeamentos de memória do processo antigo não são preservados (incluindo a memória para envs / args passados).
Para o novo programa, onde ler os envs / args? O kernelfaça uma cópia do envs / args passado e colocado no novo mapeamento de memória, ou alguns outros truques?