什么是守护进程,它獨立於控制終端並且


 Linux Daemon(守護進程)是運行在後臺的一種特殊進程。它獨立於控制終端並且周期性地執行某種任務或等待處理某些發生的事件。它不需要用戶輸入就能運行而且提供某種服務,不是對整個系統就是對某個用戶程序提供服務。  Linux系統的大多數服務器就是通過守護進程實現的。常見的守護進程包括系統日誌進程syslogd、 web服務器httpd、郵件服務器sendmail和數據庫服務器mysqld等。

 守護進程一般在系統啟動時開始運行,除非強行終止,否則直到系統關機都保持運行。守護進程經常以超級用戶(root)權限運行,因為它們要使用特殊的端口(1-1024)或訪問某些特殊的資源。

 一個守護進程的父進程是init進程,因為它真正的父進程在fork出子進程後就先於子進程exit退出了,所以它是一個由init繼承的孤兒進程。守護進程是非交互式程序,沒有控制終端,所以任何輸出,無論是向標準輸出設備stdout還是標準出錯設備stderr的輸出都需要特殊處理。

 守護進程的名稱通常以d結尾,比如sshd、xinetd、crond等

 如果,調用setsid的進程不是一個進程組的組長,此函數創建一個新的會話期。

(1)此進程變成該對話期的首進程

(2)此進程變成一個新進程組的組長進程。

(3)此進程沒有控制終端,如果在調用setsid前,該進程有控制終端,那麽與該終端的聯系被解除。 如果該進程是一個進程組的組長,此函數返回錯誤。

(4)為了保證這一點,我們先調用fork()然後exit(),此時只有子進程在運行

相关内容