• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 守護進程的概念和建立方法

    發表于:2007-07-02來源:作者:點擊數: 標簽:
    守護進程是一種后臺運行彬接獨立于所有終端控制之外的進程. 正是因為守護進程獨立于所有的終端控制,因此,他無法向通常程序那樣將信息直接輸出到標準輸出和標準錯誤輸出.威力解決這個問題, linux 提供了syslog()函數.通過他,守護進程可以向系統的log文件寫入

      守護進程是一種后臺運行彬接獨立于所有終端控制之外的進程.

      正是因為守護進程獨立于所有的終端控制,因此,他無法向通常程序那樣將信息直接輸出到標準輸出和標準錯誤輸出.威力解決這個問題,linux提供了syslog()函數.通過他,守護進程可以向系統的log文件寫入信息.他在系統函數庫syslog.h中的定義如下:
    void syslog(int priority,char *format,...);
    在一個進程使用syslog()的時候,應該先用openlog()打開系統紀錄.

    #include
    void openlog(const *ident,int options,int facility);
    參數ident是一個字符竄,通常他是程序的名字.
    options可以是下面的值.
    LOG_CONS 如果不能寫入LOG值.則直接將其發送給主控臺.
    LOG_NDELAY 直接建立SYSLOGD進程而不是打開LOG文件
    LOG_PERROR 將信息寫入LOG同時也發送給標準錯誤輸出.
    LOG_PID 在每個信息中加入PID值.用一個

    下面用一個示例來講解:
    #include
    #include
    #include
    #include

    #define MAXFD 64

    main(){

    int i;

    if(fork())
    exit(1); /*父進程退出,使子進程成為后臺進程*/

    setsid(); /*建立一個新的進程組,在這個新的進程組中,子進程成為這個進程組的首進程.這樣,該進程就獨立于所有終端之外*/

    signal(SIGHUP,SIG_IGN); /*忽略SIGHUP信號*/

    if(fork())
    exit(1); /*再次fork(),保證該進程不是進程組的首進程.*/

    chdir("/"); /*改變當前目錄,使得進程不和任何文件系統關聯*/

    unmask(0); /*清除文件掩碼,消除進程掩碼對其所創建文件的影響*/

    for(i=0;i close(i); /*關閉所有文件描述符*/

    openlog(pname,LOG_PID,facility); /*打開記錄*/

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>