(C 通訊架構學習筆記) 守護程序及訊號處理實戰

2021-10-10 19:28:49 字數 1654 閱讀 4606

目錄

守護程序功能的實現

訊號處理函式的進一步完善

【ngx_daemon()函式】

int ngx_daemon()

ngx_parent = ngx_pid;

ngx_pid = getpid();

if (setsid() == -1)

umask(0);

int fd = open("/dev/null", o_rdwr);

if (fd == -1)

if (dup2(fd, stdin_fileno) == -1)

if (dup2(fd, stdout_fileno) == -1)

if (fd > stderr_fileno)

}return 0;

}

【main中呼叫】

【注意】

【訊號處理函式:防止單獨kill子程序時子程序變成殭屍程序】

static void ngx_signal_handler(int signo, siginfo_t *siginfo, void *ucontext)

} action = (char *)"";

if(ngx_process == ngx_process_master)

}else if(ngx_process == ngx_process_worker)

else

if(siginfo && siginfo->si_pid)

else

if (signo == sigchld)

return;

}static void ngx_process_get_status(void)

if(pid == -1)

if(err == echild && one)

if (err == echild)

ngx_log_error_core(ngx_log_alert,err,"waitpid() failed!");

return;

} one = 1;

if(wtermsig(status))

else

} return;

}

通訊架構實戰 3 7 守護程序詳解 範例演示

一 普通程序執行觀察 ps eo pid,ppid,sid,tty,pgrp,comm,stat,cmd grep e bash pid nginx a 程序有對應的終端,如果終端退出,那麼對應的程序也就消失了 它的父程序是乙個bash b 終端被佔住了,你輸入各種命令這個終端都沒有反應 二 守護程...

APUE學習筆記 19 守護程序

by 潘雲登 對於商業目的下對本文的任何行為需經作者同意。寫在前面 1.本文內容對應 unix 環境高階程式設計 第 2版 第 13章。2.總結了守護程序的基本概念 程式設計規則以及如何進行出錯處理。3.守護程序 守護程序也稱精靈程序 daemon 是生存期較長的一種程序。它們常常在系統自舉時啟動,...

學習筆記 fork實現守護程序

目標 fork的父程序作為守護程序監測子程序,如果子程序掛了,則可以實現子程序的重啟。include include include include include include include include include 共享記憶體一定要包含這個標頭檔案,否則執行會出現段錯誤 include...