要撰寫一個可以跨平台的程式(無論是要重新編譯或基於虛擬機器即時執行),與環境相關的資訊如何設定與取得是必須解決的,例如使用者家(home)路徑、暫存路徑、主機資訊等,這些相關資訊,可以使用GLib的 Miscellaneous Utility Functions 中所提供的函式來取得。
以下的範例程式示範了幾個環境資訊的取得,以及環境變數的取得與設定:
- environment_info_demo.c
#include <glib.h>
int main(int argc, char *argv[]) {
printf("Host name\t: %s\n", g_get_host_name());
// 取得使用者真實姓名
printf("Real name\t: %s\n", g_get_real_name());
// 取得使用者帳號名稱
printf("User name\t: %s\n", g_get_user_name());
// 取得目前所在路徑
printf("Current dir\t: %s\n", g_get_current_dir());
// 取得使用者家目錄
printf("Home dir\t: %s\n", g_get_home_dir());
// 取得暫存目錄
printf("Temp dir\t: %s\n", g_get_tmp_dir());
// 取得PATH環境變數
printf("PATH\t\t: %s\n", g_getenv("PATH"));
// 設定CLASSPATH環境變數,FALSE表示若已設定則不覆寫
g_setenv("CLASSPATH", "D:\\Temp", FALSE);
// 取得CLASSPATH環境變數
printf("CLASSPATH\t: %s\n", g_getenv("CLASSPATH"));
// 取消CLASSPATH環境變數
g_unsetenv("CLASSPATH");
printf("CLASSPATH\t: %s\n", g_getenv("CLASSPATH"));
return 0;
}
一個執行結果如下所示:
Host name : CATERPILLAR-PC
Real name : caterpillar
User name : caterpillar
Current dir : D:\Temp
Home dir : C:\Users\caterpillar
Temp dir : C:\Users\CATERP~1\AppData\Local\Temp
PATH : C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Pro
gram Files\ASUS Security Center\ASUS Security Protect Manager\bin;C:\Program Fil
es\Java\jdk1.6.0_07\bin;C:\Winware\MinGW\bin;C:\Winware\Qt\4.3.3\bin;C:\Winware\
Gtk\bin
CLASSPATH : D:\Temp
CLASSPATH : (null)
Real name : caterpillar
User name : caterpillar
Current dir : D:\Temp
Home dir : C:\Users\caterpillar
Temp dir : C:\Users\CATERP~1\AppData\Local\Temp
PATH : C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Pro
gram Files\ASUS Security Center\ASUS Security Protect Manager\bin;C:\Program Fil
es\Java\jdk1.6.0_07\bin;C:\Winware\MinGW\bin;C:\Winware\Qt\4.3.3\bin;C:\Winware\
Gtk\bin
CLASSPATH : D:\Temp
CLASSPATH : (null)