守護程序為什麼要fork兩次?

2021-07-31 21:26:59 字數 398 閱讀 8934

(1)呼叫一次fork的作用:

第一次fork的作用是讓shell認為這條命令已經終止,不用掛在終端輸入上,還有就是為了後面的setsid服務,因為呼叫setsid函式的程序不能是程序組組長,如果不fork出子程序,則此時的父程序是程序組組長,就無法呼叫setsid。當子程序呼叫完setsid函式之後,子程序是會話組長也是程序組組長,並且脫離了控制終端,此時,不管控制終端如何操作,新的程序都不會收到一些訊號使得程序退出。

(2)第二次fork的作用:

雖然當前關閉了和終端的聯絡,但是後期可能會誤操作開啟了終端。

只有會話首程序能開啟終端裝置,

也就是再fork一次,再把父程序退出,再次fork的子程序作為守護程序繼續執行,保證了該精靈程序不是對話期的首程序,

第二次不是必須的,是可選的。

daemon 程序為什麼要fork兩次

daemon 程序為什麼要fork兩次 daemon程序是後台守護程序,有時候也叫精靈程序 agent linux下server都是daemon程序。相信大部分開發人員都知道如何去寫乙個daemon程序。但是另一方面,大部分人不知道為什麼要這麼做,不少人是從某個地方copy乙個函式,拿來主義。但是具...

daemon 程序為什麼要fork兩次

daemon程序是後台守護程序,有時候也叫精靈程序 agent linux 下server都是daemon程序。相信大部分開發人員都知道如何去寫乙個daemon程序。但是另一方面,大部分人不知道為什麼要這麼做,不少人是從某個地方copy乙個函式,拿來主義。但是具體為什麼這麼實現,卻不是很透徹。見過一...

建立守護程序以及為什麼fork兩次

呼叫fork 父程序退出,目的是 在子程序中呼叫ssetsid 會導致如下結果 呼叫chdir 將當前工作目錄更改為根目錄,目的是防止使用者改動目錄,從而影響程序的執行 關閉相應的檔案描述符,原因是,當前程序已經脫離終端,防止產生並不需要的互動作用,還有乙個原因,用fork新建的子程序會從父程序那裡...