Linux守护进程的创建(结合nginx框架)
生活随笔
收集整理的這篇文章主要介紹了
Linux守护进程的创建(结合nginx框架)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Linux守護進程的創建(結合nginx框架)
先介紹幾個相關函數:
int dup2(arg1,arg2):參數一指向的內容賦給參數二,shi的參數二也能訪問參數一所指向的內容,并返回新的描述符
int fork()創建子進程,返回值-1:創建失敗 返回值0:子進程 返回其他:父進程
setsid()調用成功后,返回新的會話的ID,調用setsid函數的進程成為新的會話的領頭進程,并與其父進程的會話組和進程組脫離
unmask():umask可用來設定[權限掩碼]。[權限掩碼]是由3個八進制的數字所組成,將現有的存取權限減掉權限掩碼后,即可產生建立文件時預設的權限,咱們現在不用管,設置成0就可以了
代碼:
#include <fcntl.h> #include <iostream> #include <signal.h> #include <stdlib.h> #include <sys/stat.h> #include <unistd.h> using std::cout; using std::endl; int ngx_doemon {int fd;switch (fork()){case -1:return -1;case 0:break;default:exit(0);}if (setsid() == -1){return -1;}umask(0);fd = open("dev/null", O_RDWR);if (fd == -1){return -1;}if (dup2(fd, STDIN_FILENO) == -1){return -1;}if (dup2(df, STDOUT_FILENO)){return -1;}if (fd > STDERR_FILENO){if (close(fd) == -1)return -1;}return 1; } int main(int argc, char const *argv[]) {if (ngx_doemon != 1){//創建守護進程失敗,可以做失敗后的處理return -1;}else{//創建守護進程成功,執行守護進程中要做的工作for (;;){sleep(1);}}return 0; }總結
以上是生活随笔為你收集整理的Linux守护进程的创建(结合nginx框架)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDEA高级技巧:集成JIRA、UML类
- 下一篇: 盘点9个你可能不会用的JS技巧