1、在父進程下產生子進程。
2、關閉父進程,使子進程成爲一個新會話的頭進程和新進程組的頭進程,從而與父進程所在的進程組和會話脫鉤。
3、忽略SIGHUP信號,防止之後新產生的進程被關閉。
4、在子進程下(後面我們稱這個子進程爲父進程SP)再產生子進程,使之成爲守護進程。這樣做的原因是如果這時開啓一個控制終端,父進程SP會自動獲取控制終端,因爲父進程SP爲會話頭進程,會話頭進程會自動獲取控制終端。從而不能成爲守護進程。
5、關閉父進程SP。
6、改變工作目錄爲根目錄,這樣做的原因是如果守護進程在一個文件系統中產生,這個文件系統在需要卸載的時候就無法卸載
7、關閉本守護進程繼承來的打開着的描述符。
8、打開/dev/null作爲本守護進程的標準輸入,輸出,錯誤輸出,這樣做的原因是保證這三個常用描述符(爲0,1,2)爲打開着的,以防被其他命令佔據這三個描述符。