6個步驟
步驟1:建立子程序,殺死父程序,目的是為了步驟2中呼叫setsid可以成功。
步驟2:建立新會話,並自任組長。目的是脫離控制終端
會話組長呼叫 setsid 會失敗,步驟1建立的子程序必然不是會話組長,
這就保證了 setsid 可以成功。
步驟3:修改工作目錄為根目錄。
當程序沒有結束時,工作目錄是不能解除安裝的,為了防止這種情況,
把工作目錄設為根目錄。因為根目錄一般是不用解除安裝的。
步驟4:修改檔案許可權掩碼,很多情況下,守護程序會建立很多臨時檔案,
出於安全性考慮,往往不希望這些檔案被其他使用者檢視,這時可以
使用 umask 函式修改檔案許可權,建立掩碼的取值,以滿足守護程序的要求。
步驟5:關閉標準輸入輸出
int daemon_me()/* 步驟2: 建立新會話,自任組長 */
if (setsid() == -1)
/* 步驟3: 修改工作目錄 */
chdir("/");
/* 步驟4: 將檔案許可權掩碼設為0 */
umask(0);
/* 步驟5: 關閉標準輸入輸出 */
fd = open("/dev/null", o_rdwr);
if (fd == -1)
if (dup2(fd, stdin_fileno) == -1)
if (dup2(fd, stdout_fileno) == -1)
if (dup2(fd, stderr_fileno) == -1)
if (fd > stderr_fileno)
}return 0;
}
實現守護程序
目錄守護程序 也稱為精靈程序,守護程序是乙個在後台執行並且不受任何終端控制的程序。unix作業系統有很多典型的守護程序 其數目根據需要或20 50不等 它們在後台執行,執行不同的管理任務。使用者使守護程序獨立於所有終端是因為,在守護程序從乙個終端啟動的情況下,這同乙個終端可能被其他的使用者使用。ps...
實現守護程序的步驟
8.2 建立守護程序 由於守護程序的特點,編寫守護程序程式必須遵守一定的規則。本節將闡述這些規則的要點,並給出相關 8.2.1 實現守護程序的步驟 在linux系統中,要程式設計實現乙個守護程序必須遵守如下的步驟。1 讓init程序成為新產生程序的父程序。呼叫fork函式建立子程序後,使父程序立即退...
php 守護程序的實現
1 php沒有執行在安全模式,關掉安全模式,即 safe mode off 2 禁用函式列表 disable functions exec,system,shell exec,proc open,popen,一般來說,exec 這些函式為了安全,都會禁用,在php.ini裡面把這些禁用的函式放出來。...