剛好前陣子工作時遇到一個讓我找了一整天的BUG,在這裡跟大家分享一下,免得以後還有其他受到這個問題的殘害。在C語言的library中,在
linux下的時區的設定是利用TZ這個環境變數來指定,如果TZ環境變數沒有設定,則會以/etc/localtime為主。
/etc/localtime檔案可能是個符號連結到一個時區設定檔,或是一個真實檔案。大部份linux系統會將環境變數指向
/etc/localtime,“TZ=/etc/localtime”,再藉由/etc/localtime來指向時區檔案。在C語言中,如果時區發現
變化,會使用tzset()涵數讓系統重新讀取到新的時間,但這個動作並無法發揮作用,導致/etc/localtime產生變化後,而
localtime()仍然會使用舊的時區來讀取時間。tzset()會reset三個C的內部變數,分別為tzname丶timezone丶
daylight。在此提供一個方法避開這個問題,因為tzset()無法成功的reset這三個變數,使得localtime()察覺不到時區的變化。
常使用mplayer和gmplayer的人應該有發現,雖然mplayer對DVD有相當完整的支援,但是都必須透過指令參數來下達,mplayer的
參數相信多到差不多可以寫本書來介紹了。大部份的使用者除了裝mplayer之外,都會再另外安裝一個mplayer-gui也就是一般常說的
gmplayer,使用圖形界面來操作mplayer對一般的使用者來說是比較明智的。可惜的是gmplayer不支援DVD中的選單,而在linux下
的播放軟體,能支援撥放DVD選單的軟體目前還是少數,kaffeine和VLC media
player都是有支援的。但這兩個並不是使用mplayer來做播放引擎,在播放的過程中比較起來還是mplayer的操作靈活性和穩定性較佳。在偶然
的情況下發現原來我還有另一個選擇,一個名為gnome-mplayer的套件。他支援了DVD的選單功能,而且也可以直接透過滑鼠來點選選單。真的是一
大福音。

