創建守護進程

守護進程有如下幾個概念
1 創建一個新的子進程
2 設置允許當前進程創建文件或者目錄最大可操作的權限
3 設置新的進程組id
4 把根目錄切換的指定的目錄
5 關閉標準輸入和輸出


#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/stat.h>
int daemon_it(){

    pid_t pid,sid;
    //創建一個子進程
    pid = fork();
    if (pid < 0){
        exit(EXIT_FAILURE);
    }
    if (pid > 0){
        exit(EXIT_SUCCESS);
    }
    //設置文件掩碼,最大權限
    umask(0);
    //創建一個新的會話id
    sid = setsid();
    if (sid < 0){
        exit(EXIT_FAILURE);
    }
    //切換到根目錄
    if (chdir("/") < 0) {
        exit(EXIT_FAILURE);
    }

    //關閉標準輸出,輸入,error
    close(STDIN_FILENO);
    close(STDOUT_FILENO);
    close(STDERR_FILENO);

    return 0;
}

void test_daemon(){
    puts("test daemon");
    daemon_it();
    while (1) {
        puts("waiting...\n");
        sleep(1);
    }
}
發佈了245 篇原創文章 · 獲贊 21 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章