鍍金池/ 教程/ Linux/ 守護(Daemon)進程
信號
創(chuàng)建目錄權限
示例程序
進程的定義
Hello World進程
創(chuàng)建進程
進程鎖
第四章 項目實例Run
Nohup命令
PID
前言
系統(tǒng)調(diào)用sendfile
進程參數(shù)
參考書籍
后記
進程狀態(tài)
本書概述
寫時復制(Copy On Write)
Docker簡介
第五章 注意事項
實現(xiàn)Run
孤兒進程概念
共享內(nèi)存
衍生(Spawn)新進程
PPID
第三章 進程進階
退出碼
簡介
進程文件
Thanks for reading!
項目學習
第一章 進程基礎
僵尸進程
系統(tǒng)調(diào)用
POSIX簡介
執(zhí)行(Exec)外部程序
文件描述符
進程名字
進程輸入與輸出
Cgroups
進程間通信
查看PID
死鎖概念
進程越多越好?
Run項目架構
  • 1.
復制(Fork)進程
第二章 Go編程實例
活鎖概念
守護(Daemon)進程
并發(fā)與并行
捕獲SIGKILL
Namespaces簡介

守護(Daemon)進程

守護(Daemon)進程

我們可以認為守護進程就是后臺服務進程,因為它會有一個很長的生命周期提供服務,關閉終端不會影響服務,也就是說可以忽略某些信號。

實現(xiàn)守護進程

首先要保證進程在后臺運行,可以在啟動程序后面加&,當然更原始的方法是進程自己fork然后結(jié)束父進程。

if (pid=fork()) {
  exit(0); // Parent process
}

然后是與終端、進程組、會話(Session)分離。每個進程創(chuàng)建時都綁定一個終端,而且屬于一個進程組(進程組也有GID不過等同進程組長的PID),這些進程組在一個會話中,如果是子進程一般會從父進程繼承這些信息,想要與環(huán)境分離可以使用以下的系統(tǒng)調(diào)用。

setsid();

同樣地我們會從父進程繼承文件掩碼(mask),可以手動清理掩碼。

umask(0);

如果需要我們可以改變當前工作目錄,避免運行時必須使用當前所在的文件系統(tǒng)。

使用Nohup

前面提到過nohup命令,是讓程序以守護進程運行的方式之一,程序運行后忽略SIGHUP信號,也就說關閉終端不會影響進程的運行。

類似的命令還有disown,這里不再詳述。