2012年3月14日 星期三

執行檔和檔案路徑注意事項

daemon 執行的時候, 通常會在程式裡 chdir 到 / 再開始做事, 藉此避免之後 daemon 所在的目錄無法被砍掉 (即使從檔案系統上下指令砍掉該目錄, 實際上它仍存在, 要等 daemon 結束才會真的釋放)。

程式執行中若需要寫入一些暫存檔, 要考慮到權限問題, 可以寫到 /tmp 最省事, 若需要永久保留, 考慮寫到 $HOME/.PROG/ 下, 不要直接寫到執行檔目錄下。平時開發寫到執行檔目錄下沒有問題, 但當需要將程式打包成套件, 裝到系統目錄時 (如 /usr/bin、/usr/local/bin), 就會有權限問題而無法寫入。

7 則留言:

  1. 是的, 看應用程式類型而定, 若本來是使用者直接用的程式, 寫到 $HOME 下滿合理的, daemon 則是另一回事

    回覆刪除
  2. 所以還要小心別跟其它程式在.PROG裡面的檔案衝突囉?

    回覆刪除
  3. 啊, PROG 是指自己寫的程式名稱, 比方說 vim 會用 .vim, cgdb 會用 .cgdb

    回覆刪除
  4. 就算是使用者直接使用的程式,為什麼要寫到$HOME,而不是寫到/tmp 下?

    回覆刪除
  5. 唔,看錯意思了,我誤會了...:P

    回覆刪除
  6. 我是指需要永久保留的話, 才考慮寫到 $HOME/.PROG/, 畢竟系統隨時有可能會去清 /tmp。寫在 /tmp 下的東西應該是最沒保障的, 顧名思議, 該用來放些可以隨時被砍掉的暫存檔

    回覆刪除

在 Fedora 下裝 id-utils

Fedora 似乎因為執行檔撞名,而沒有提供 id-utils 的套件 ,但這是使用 gj 的必要套件,只好自己編。從官網抓好 tarball ,解開來編譯 (./configure && make)就是了。 但編譯後會遇到錯誤: ./stdio.h:10...