<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    LALA  
    日歷
    <2009年12月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導(dǎo)航

    留言簿(1)

    隨筆分類(31)

    文章分類(4)

    收藏夾(21)

    搜索

    •  

    積分與排名

    • 積分 - 29818
    • 排名 - 1390

    最新隨筆

    最新評論

    閱讀排行榜

     
        守護(hù)進(jìn)程運(yùn)行在后臺,不與任何控制終端相關(guān)聯(lián).守護(hù)進(jìn)程以root用戶運(yùn)行或者其他特殊的用戶,并處理一些系統(tǒng)級的任務(wù), 習(xí)慣上守護(hù)進(jìn)程的名字以d結(jié)尾,但不是必須的.
        對守護(hù)進(jìn)程的兩個(gè)基本要求: 它必須是init進(jìn)程的子進(jìn)程; 不與任何控制終端相關(guān)聯(lián).
        一般來講, 進(jìn)程可以通過以下步驟成為守護(hù)進(jìn)程:
    1. 調(diào)用fork(), 創(chuàng)建新的進(jìn)程, 它會是將來的守護(hù)進(jìn)程.
    2. 在守護(hù)進(jìn)程的父進(jìn)程中調(diào)用exit(). 這保證祖父進(jìn)程(守護(hù)進(jìn)程的祖父進(jìn)程)確認(rèn)父進(jìn)程已經(jīng)結(jié)束. 還保證父進(jìn)程不再繼續(xù)運(yùn)行, 守護(hù)進(jìn)程不是組長進(jìn)程. 最后一點(diǎn)是順利完成一下步驟的前提.
    3. 調(diào)用setsid(), 使得守護(hù)進(jìn)程有一個(gè)新的進(jìn)程組和新的會話, 兩者都把它作為首進(jìn)程, 這也保證它不會與控制終端相關(guān)聯(lián).
    4. 用chdir()將當(dāng)前工作目錄改為根目錄. 因?yàn)榍懊嬲{(diào)用fork()創(chuàng)建了新進(jìn)程, 它所繼承來的當(dāng)前工作目錄可能在文件系統(tǒng)的任何地方. 而守護(hù)進(jìn)程通常在系統(tǒng)啟動時(shí)運(yùn)行, 同時(shí)不希望一些隨機(jī)目錄保持打開狀態(tài), 也就阻止了管理員卸載守護(hù)進(jìn)程工作目錄所在的那個(gè)文件系統(tǒng).
    5. 關(guān)閉所有的文件描述符. 不需要繼承任何打開的文件描述符, 對于無法確認(rèn)的文件描述符, 讓它們繼續(xù)處于打開狀態(tài).
    6. 打開0, 1和2號文件描述符(標(biāo)準(zhǔn)輸入, 標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤), 把它們重定向到/dev/null.
    根據(jù)這些規(guī)則, 下面程序可以成為守護(hù)進(jìn)程:
     1 #include<sys/types.h>
     2 #include<sys/stat.h>
     3 #include<stdlib.h>
     4 #include<stdio.h>
     5 #include<fcntl.h>
     6 #include<unistd.h>
     7 #include<linux/fs.h>
     8 
     9 int main(void)
    10 {
    11  pid_t pid;
    12  int i;
    13  /* create new process */
    14  pid = fork();
    15  if(pid == -1return -1;
    16  else if(pid != 0) exit(EXIT_SUCCESS);
    17  /* create new session and process group */
    18  if(setsid() == -1return -1;
    19  /* set the working directory to the root directory*/
    20  if(chdir("/"== -1return -1;
    21  /* close all open files -- NR_OPEN is overkill, but works */
    22  for(i = 0; i < NR_OPEN; i++) close(i);
    23  /* redirect fd's 0, 1, 2 to /dev/null */
    24  open("/dev/null", O_RDWR); /* stdin */
    25  dup(0); /* stdout */
    26  dup(0); /* stderr */
    27  /* do it daemon thing.*/
    28  
    29  return 0;
    30 }

    許多Unix系統(tǒng)在它們的C函數(shù)庫中提供了daemon()函數(shù)來完成這些工作:
    #include <unistd.h>
    int daemon(int nochdir, int noclose);

    posted on 2009-12-11 11:33 Dest 閱讀(1003) 評論(0)  編輯  收藏 所屬分類: Linux
     
    Copyright © Dest Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 久久免费观看国产99精品| 999国内精品永久免费视频| 国产亚洲综合色就色| 51视频精品全部免费最新| 亚洲精品乱码久久久久久V | 久久99精品免费一区二区| 久久久亚洲欧洲日产国码二区| 免费大片黄在线观看yw| 女人裸身j部免费视频无遮挡| 久久亚洲AV成人无码电影| 国产成人精品免费视频软件| 国产精品区免费视频| 亚洲av永久中文无码精品综合| 久久青青成人亚洲精品| 精品久久久久久久免费加勒比| 国产成人免费ā片在线观看老同学| 亚洲综合色丁香婷婷六月图片| 亚洲精品狼友在线播放| 午夜时刻免费入口| 国产成人久久AV免费| 美女黄频a美女大全免费皮| 亚洲精品456在线播放| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 亚洲一区二区电影| 免费jlzzjlzz在线播放视频| 国产精品免费精品自在线观看| 一级视频免费观看| 亚洲人成电影网站免费| 麻豆亚洲AV永久无码精品久久| 亚洲精品无码专区2| 永久久久免费浮力影院| 1000部拍拍拍18勿入免费视频软件| 国产A∨免费精品视频| 亚洲午夜精品久久久久久app| 亚洲另类激情综合偷自拍| 国产亚洲精久久久久久无码77777| 日韩在线免费播放| 黄页免费的网站勿入免费直接进入| 老司机69精品成免费视频| 成人免费ā片在线观看| 一级毛片**免费看试看20分钟 |