Это полностью можно сделать, записав NUL
в область памяти, в которой находятся переменные среды:
#include <stdio.h>
#include <unistd.h>
extern char **environ;
int main(void)
{
int i;
char *p = *environ;
/* hopefully your ENV is longer than this */
for (i = 0; i < 10; i++) *(p + i) = 0;
printf("hexdump -C /proc/%d/environ\n", getpid());
sleep(99999);
}
Если вместо этого вы запустите программу с пустой средой, то окружение
файл будет полностью пустым:
execle("/bin/sleep", "sleep", "999", (char *)NULL, (char *const) NULL)
Таким образом, этот случай - это что-то, что было сделано процессом или с ним, когда он запущен (и мало что может предотвратить это, если вы каким-то образом не заблокируете эту память, а затем setenv (3)
вызовы могут быть проблематичными ...).