守護程序的實現

2021-08-26 06:19:46 字數 852 閱讀 6959

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裡面把這些禁用的函式放出來。...