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?

questionAnswers(1)

yourAnswerToTheQuestion