說說守護進程
時間:2016-12-30作者:華清遠見(jian)
守護進(jin)程又稱精靈進(jin)程(daemon),一(yi)般(ban)在系(xi)統(tong)啟動時開始,而在系(xi)統(tong)關閉時終(zhong)止。沒有控制終(zhong)端,運行在后臺。在linux系(xi)統(tong)中(zhong)有很多這類(lei)進(jin)程。 下(xia)面說一下(xia)如(ru)何創建一個(ge)守護進程。
(1) 使用umask修改文件的屏蔽字,為文件賦予跟多的權限,因為繼承來的文件可能某些權限被屏蔽,從而失去某些功能,如讀寫。 下(xia)面使用一個例程說一下(xia)這個過(guo)程。
#include <stdio.h>
int main()
pid_t pid;
//XXX step 1:set umask
//XXX setp 2:fork
//XXX step 3:setsid
//XXX step 4:chdir
//XXX step 5:close all open file descriptors
} 上面便是(shi)一個守護進(jin)程(cheng)的(de)創建過程(cheng),可是(shi)一些書或網絡上寫守護進(jin)程(cheng),會(hui)在第三步和(he)第四步之間添加這樣一點代碼。
if((pid = fork()) < 0) 很多學生就(jiu)會(hui)問,為什(shen)么要(yao)創建兩(liang)次進程呢,這是因為第三步結束后(hou),進程創建了(le)一個新(xin)的會(hui)話(hua)(hua)組,并成(cheng)為會(hui)話(hua)(hua)組長(chang),而(er)會(hui)話(hua)(hua)組長(chang)可能獲(huo)得(de)控制終端,如果獲(huo)得(de)了(le)控制終端那么或(huo)這個進程就(jiu)不是守護進程了(le)。所以(yi)添加了(le)這幾句代碼,讓(rang)進程失(shi)去會(hui)話(hua)(hua)組長(chang)的身份(fen),從而(er)沒有獲(huo)得(de)控制終端的權限(xian)。
發表評論
|