close

最近研究了一下如何寫 Linux 的 daemon (相當於 windows 的 service)

首先找到了這篇文章

這篇文章寫的相當的清楚

基本上只要依照以下的原則就可以寫出基本的骨架

  1. 呼叫 Fork() 並且讓父程序結束
  2. 改變 umask 為0
  3. 建立log
  4. 呼叫 setsid() 建立一個新的作業階段
  5. 改變目前的工作路徑到一個安全的地方,也就是說永遠都會存在的路徑。例如根目錄就是一個很好的選擇
  6. 關閉沒有必要的檔案描述詞
  7. 你這隻 daemon 所要做的事

另外要寫 daemon 有一點一定要注意

那就是盡可能使用防禦式的方式來寫 code

因為 daemo 不像一般的程式

它如果當掉了是很難 debug

所以錯誤檢查要做好,並且一定要 log 起來。

 

如果你會寫 python

那麼也許你會喜歡此篇文章的程式碼

如果你仔細看一下他的程式碼

你會發現他的 Daemon 這個 class 也是依照上面的原則寫出來的。

 

有了一個 daemon 骨架之後

接下來就看你有什麼需求了

譬如,如果想監控某個目錄下,檔案的新增,刪減或修改

可以搭配 inotify,python 也有相對應的模組 pyinotify

並將所監控的訊息紀錄在一個檔案。

arrow
arrow
    全站熱搜

    moiamond 發表在 痞客邦 留言(1) 人氣()