函数

GLibsetenv

自:2.4

声明 [源代码]

gboolean
g_setenv (
  const gchar* variable,
  const gchar* value,
  gboolean overwrite
)

说明 [源代码]

设置环境变量。在 UNIX 上,变量名称和值均可以是任意字节字符串,但变量名不能包含“=”。在 Windows 上,它们应采用 UTF-8。

注意,在某些系统上,覆盖变量时,不会回收用于前一个变量及其值所使用的内存。

你应意识到,UNIX 中的环境变量处理方式并非线程安全,如果一个线程调用 g_setenv() 而另一个线程同时调用 getenv(),你的程序可能会崩溃。(注意,许多函数(例如 gettext())都内调用 getenv()。)只有在程序开始时,且在创建任何其他线程(或创建将创建自身工作线程的对象)之前,使用此函数才是安全的。

如果需要为子进程设置环境,则可以使用 g_get_environ() 获取环境数组,通过 g_environ_setenv() 和 g_environ_unsetenv() 对其进行修改,然后直接将该数组传递到 execvpe()、g_spawn_async() 或类似函数。

自 2.4 起可用

参数

variable

类型: const gchar*

待设置的环境变量,不得包含“=”。

数据由函数的调用者所有。
值是平台原生字符串,在 Unix 上使用首选的操作系统编码,在 Windows 上使用 UTF-8。
value

类型: const gchar*

待设置变量的值。

数据由函数的调用者所有。
值是平台原生字符串,在 Unix 上使用首选的操作系统编码,在 Windows 上使用 UTF-8。
overwrite

类型: gboolean

如果变量已存在,是否更改该变量。

返回值

类型: gboolean

如果无法设置环境变量,则为 FALSE