會話周期
在linux中,守護進程的編寫步驟中,第二步:在子進程中創建新會話。
會話周期:會話期是一個或多個進程組的集合。通常,一個會話開始於用戶登錄,終止於用戶退出,在此期間該用戶運行的所有進程都屬於這個會話期。
接下來就可以具體介紹setsid的相關內容:
(1)setsid函式作用:
setsid函式用於創建一個新的會話,並擔任該會話組的組長。調用setsid有下面的3個作用:
讓進程擺脫原會話的控制
讓進程擺脫原進程組的控制
讓進程擺脫原控制終端的控制
那么,在創建守護進程時為什麼要調用setsid函式呢?由於創建守護進程的第一步調用了fork函式來創建子進程,再將父進程退出。由於在調用了fork函式時,子進程全盤拷貝了父進程的會話期、進程組、控制終端等,雖然父進程退出了,但會話期、進程組、控制終端等並沒有改變,因此,這還不是真正意義上的獨立開來,而setsid函式能夠使進程完全獨立出來,從而擺脫其他進程的控制。