一、引言 daemon程式是一直執行的服務端程式,又稱為守護程序。
本文介紹了在linux下編寫daemon程式的步驟,並給出了例子程式。
二、daemon程式簡介
daemon是長時間執行的程序,通常在系統啟動後就執行,在系統關閉時才結束。一般說daemon程式在後台執行,是因為它沒有控制終端,無法和前台的使用者互動。daemon程式一般都作為服務程式使用,等待客戶端程式與它通訊。我們也把執行的daemon程式稱作守護程序。
三、daemon程式編寫規則
編寫daemon程式有一些基本的規則,以避免不必要的麻煩。
1、首先是程式執行後呼叫fork,並讓父程序退出。子程序獲得乙個新的程序id,但繼承了父程序的程序組id。
2、呼叫setsid建立乙個新的session,使自己成為新session和新程序組的leader,並使程序沒有控制終端(tty)。
3、改變當前工作目錄至根目錄,以免影響可載入檔案系統。或者也可以改變到某些特定的目錄。
4、設定檔案建立mask為0,避免建立檔案時許可權的影響。
5、關閉不需要的開啟檔案描述符。因為daemon程式在後台執行,不需要於終端互動,通常就關閉stdin、stdout和stderr。其它根據實際情況處理。
另乙個問題是daemon程式不能和終端互動,也就無法使用printf方法輸出資訊了。我們可以使用syslog機制來實現資訊的輸出,方便程式的除錯。在使用syslog前需要首先啟動syslogd程式,關於syslogd程式的使用請參考它的man page,或相關文件,我們就不在這裡討論了。
int init_daemon(void)
pid_t pid;
int i;
if((pid = fork()) < 0)
return -1;
else if(pid != 0)
exit(0);//退出父程序
linux下編寫C 程式
注 本文寫的內容全部在ubuntu12.04下完成。要在linux下寫c 程式,要懂的一點編譯的知識。下面介紹一下。源 預處理器 負責將 補充 匯程式設計序 生成組合語言 目標程式 生成二進位制檔案 鏈結器 鏈結檔案 可執行程式 生成執行程式 在linux下寫c 程式主要是用g 編譯器,安裝g 執行...
Linux下Makefile編寫語法
makefile樣例 all main.c foo1.c foo2.c foo3.c gcc main.c foo1.c foo2.c foo3.c o all targets prerequisites command 或者targets prerequisites command targets...
Linux下編寫php擴充套件
linux下編寫php擴充套件 1 所需 phpize 如果一開始是使用原始碼編譯裡面就有 php原始碼 2 到原始碼目錄下ext目錄裡面,執行.ext skel extname myext 3 生成擴充套件框架後,需要進入裡面修改m4檔案,php arg enable myext,whether ...