gutils: Add functions for working with environment arrays

When spawning a child process, it is not safe to call setenv() before
the fork() (because setenv() isn't thread-safe), but it's also not
safe to call it after the fork() (because it's not async-signal-safe).
So the only safe way to alter the environment for a child process from
a threaded program is to pass a fully-formed envp array to
exec*/g_spawn*/etc.

So, add g_environ_getenv(), g_environ_setenv(), and
g_environ_unsetenv(), which act like their namesakes, but work on
arbitrary arrays rather than working directly on the environment.

http://bugzilla.gnome.org/show_bug.cgi?id=659326
This commit is contained in:
Dan Winship
2011-10-15 15:52:28 -04:00
committed by Matthias Clasen
parent 5ff803d91f
commit 409d93148f
5 changed files with 225 additions and 48 deletions

View File

@@ -1665,6 +1665,9 @@ g_set_application_name
g_get_prgname
g_set_prgname
g_get_environ
g_environ_getenv
g_environ_setenv
g_environ_unsetenv
g_getenv
g_setenv
g_unsetenv