APUE:守護進程

  1. 重置文件屏蔽字 umask(0)
  2. fork(),父進程 exit(0) 以響應啓動者
  3. setsid(),斷開全部控制終端
  4. 修改工做目錄爲 /
  5. 關閉文件描述符
  6. 將 0、一、2 重定位到 /dev/null
  7. 檢測是否已經存在相同的守護進程正在運行,對 /var/run/xxxd.pid 進行 lockfile()
  8. 恢復 SIGHUP 的信號處理程序爲默認 SIG_DFL
  9. 主線程調用 pthread_sigmask() 屏蔽全部信號
  10. 開新線程,使用 sigwait() 等待信號,遇到 SIGHUP 重讀配置文件,遇到 SIGTERM 終止
  11. 主線程完成其餘工做

 

寫入日誌:線程

#define	LOG_EMERG	0	/* system is unusable */
#define	LOG_ALERT	1	/* action must be taken immediately */
#define	LOG_CRIT	2	/* critical conditions */
#define	LOG_ERR		3	/* error conditions */
#define	LOG_WARNING	4	/* warning conditions */
#define	LOG_NOTICE	5	/* normal but significant condition */
#define	LOG_INFO	6	/* informational */
#define	LOG_DEBUG	7	/* debug-level messages */

int syslog (int __pri, const char *__fmt, ...);
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息