Use GDB to attach to the process
xxxxxxxxxx# gdb -p <Process-PID>Set environment variable
xxxxxxxxxx(gdb) p setenv("Key", "Value")
Exit
xxxxxxxxxx(gdb) q
x/* * setlive_env.c */intmain(int argc, char *argv[]){ int i = 0; char *env_val; for (i = 0; i < 10; i++) { env_val = getenv("Env_Key"); printf("Env Val for TZ: %s\n", env_val); sleep(5); } return (0);}Build the code:
xxxxxxxxxx# gcc setenv_live.c -o setenv_live.oRun the code:
xxxxxxxxxx# ./setenv_live.oInitial Output:
xxxxxxxxxx# ./setenv_live.oEnv Val for TZ: (null)Env Val for TZ: (null)Run gdb to attach to the process
xxxxxxxxxx# gdb -p <PID-OF-ABOVE-PROCESS>Set env value and exit
xxxxxxxxxx(gdb) p setenv("Env_Key", "New_Value")$1 = 0(gdb) qA debugging session is active. Inferior 1 [process 11414] will be detached.Quit anyway? (y or n) yDetaching from program: /root/setenv_live.o, process 11414Output after setting env variable:
# ./setenv_live.oEnv Val for TZ: (null)Env Val for TZ: (null)Env Val for TZ: New_ValueEnv Val for TZ: New_ValueEnv Val for TZ: New_ValueEnv Val for TZ: New_ValueEnv Val for TZ: New_ValueEnv Val for TZ: New_ValueEnv Val for TZ: New_ValueEnv Val for TZ: New_Value