為什麼我們在守護程式時要使用setsid()?

為什麼我們在守護程式時要使用setsid()?

為了創建一個服務(守護程式)我們分叉父進程並使其退出,同時透過呼叫 使子進程成為會話領導者setsid()。而且我們為什麼要使用setsid()?我們的孤兒進程由init(儘管並非所有情況)進程來處理。

我們為什麼要使用setsid()setsid()和處理SIGHUP訊號之間有什麼關係嗎?

答案1

我們之所以使用,setsid()是因為如果我們只殺死父母,孩子也會被殺死,也就是setsid()

建立一個新會話如果呼叫進程不是進程組領導者。呼叫進程是新會話的領導者、新進程組的進程組領導者,並且沒有控制終端。

父進程是第一個進程組領導者,殺死它 - 或殺死會話/終端 - 殺死該組,這就是我們切換領導者的原因(並在我們處於該狀態時創建一個新會話)。

相關內容