execve () и переменные окружения

У меня есть вопрос о том, как Linux обрабатывает переменные среды, передаваемые в execve ():

Синопоз для execve (): int execve(const char *filename, char *const argv[], char *const envp[]);

Перед вызовом execve () мы выделяем память для хранения envs / args из отображения памяти текущего процесса. Но после execve () весь текст / data / bss / stack вызывающего процесса перезаписывается новой программой, и все отображения памяти старого процесса не сохраняются (включая память для переданных envs / args).

Для новой программы, где читать envs / args? Ли ядроmake a copy из переданных envs / args и поместил их в новое отображение памяти, или какие-то другие уловки?

Ответы на вопрос(1)

Ваш ответ на вопрос