程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> linux編程-創建daemon進程時為什麼要用setsid創建一個新的session?

linux編程-創建daemon進程時為什麼要用setsid創建一個新的session?

編輯:編程綜合問答
創建daemon進程時為什麼要用setsid創建一個新的session?

不管是unix環境高級編程還是網絡上都說創建daemon的步驟是:
1. fork
2. setsid創建新session
3. 父進程exit
這樣子進程就能脫離terminal了.

這樣子確實沒錯, 我之前以為這是為了避免子進程被強制退出, 所以才要脫離terminal和父進程.

但是在實驗的時候發現, 沒有setsid, 僅僅fork一個子進程並讓子進程無限循環, 父進程fork之後exit, 子進程並沒有隨之結束. 仍然在運行. 同樣我在終端輸入exit命令之後, 子進程仍然還在運行. 也就是說子進程並不會被強制退出, 那還要創建新的session干嘛?

最佳回答:


fork子進程後,它會繼承父進程所有相關的上下文信息,setsid就是來創建一個新的session,從而清除這些無關信息。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved