說說守護(hù)進(jìn)程
時間:2016-12-30作者:華清遠(yuǎn)見
守護(hù)進(jìn)程又稱精靈進(jìn)程(daemon),一般在系統(tǒng)啟動時開始,而在系統(tǒng)關(guān)閉時終止。沒有控制終端,運(yùn)行在后臺。在linux系統(tǒng)中有很多這類進(jìn)程。 下面說一下如何創(chuàng)建一個守護(hù)進(jìn)程。
(1) 使用umask修改文件的屏蔽字,為文件賦予跟多的權(quán)限,因?yàn)槔^承來的文件可能某些權(quán)限被屏蔽,從而失去某些功能,如讀寫。 下面使用一個例程說一下這個過程。
#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
} 上面便是一個守護(hù)進(jìn)程的創(chuàng)建過程,可是一些書或網(wǎng)絡(luò)上寫守護(hù)進(jìn)程,會在第三步和第四步之間添加這樣一點(diǎn)代碼。
if((pid = fork()) < 0) 很多學(xué)生就會問,為什么要創(chuàng)建兩次進(jìn)程呢,這是因?yàn)榈谌浇Y(jié)束后,進(jìn)程創(chuàng)建了一個新的會話組,并成為會話組長,而會話組長可能獲得控制終端,如果獲得了控制終端那么或這個進(jìn)程就不是守護(hù)進(jìn)程了。所以添加了這幾句代碼,讓進(jìn)程失去會話組長的身份,從而沒有獲得控制終端的權(quán)限。
相關(guān)資訊
發(fā)表評論
|