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 и поместил их в новое отображение памяти, или какие-то другие уловки?