我一直在尋找創建Unix守護進程,似乎有兩種方法。在囉嗦一句,這似乎拿出搜索時,爲再次調用fork()
,setsid()
,fork()
,chdir()
到安全的地方,設置umask()
,最後close()
stdin
,stdout
和stderr
。調用守護進程()和調用fork(),setsid(),fork()等有什麼區別?
但是,運行man daemon
會提示有關daemon()
函數的信息,這似乎與上面所做的內容完全相同。這兩種方法之間有什麼不同嗎?或者daemon()
只是一個方便的功能,它和冗長的方法做同樣的事情?是一個更好的,特別是對於新手C程序員?
將文件描述符0,1和2打開到'/ dev/null'比關閉它們要好,因爲否則守護程序打開的下一個文件(日誌文件,套接字,...)將獲得這些文件描述符 - 可能會咬你,說當你打電話的某個庫決定寫一個錯誤到'stderr' ... – caf
好的調用不關閉描述符0,1和2。 –