會話用來管理前後臺程序組。
會話一般關聯著乙個終端。
關閉乙個終端,它對應的會話中的所有程序都會被關閉。
不受終端影響,就算終端退出,也可以繼續在後台執行。
#include
#include
#include
#include
#include
#include
#include
#include
#define maxfile 3
intmain()
if(pid >0)
//建立新會話,擺脫終端的影響
setsid()
;//改變當前工作目錄
chdir
("/");
//重設檔案許可權掩碼
umask(0
);//關閉檔案的預設描述符
for(i=
0;i)//實現守護程序的功能
while(1
)}
實驗結果
關閉當前終端,開啟乙個新的終端
jl@jl-virtual-machine:
~/test$ ls
a.out dae.c daemon.log dsadsa.c epit exit.c fscanf.c precise stack.c test tt1.c tt.c wait.c
jl@jl-virtual-machine:
~/test$
jl@jl-virtual-machine:
~/test$
jl@jl-virtual-machine:
~/test$ ps aux | grep a.out
jl 15237
0.00.0
4380
72? ss 00:15
0:00.
/a.out
jl 15432
0.00.0
16180
1064 pts/
0 r+00:
170:00 grep --color=
auto a.out
jl@jl-virtual-machine:
~/test$
jl@jl-virtual-machine:
~/test$
jl@jl-virtual-machine:
~/test$
jl@jl-virtual-machine:
~/test$
jl@jl-virtual-machine:
~/test$
jl@jl-virtual-machine:
~/test$
jl@jl-virtual-machine:
~/test$ cat daemon.log
the daemon is running.
the daemon is running.
the daemon is running.
jl@jl-virtual-machine:
~/test$
jl@jl-virtual-machine:
~/test$
jl@jl-virtual-machine:
~/test$ cat daemon.log
the daemon is running.
the daemon is running.
the daemon is running.
the daemon is running.
the daemon is running.
the daemon is running.
the daemon is running.
the daemon is running.
the daemon is running.
jl@jl-virtual-machine:
~/test$
可以看到log檔案成功產生,該程序依然存在,並且不斷地往log檔案裡面寫log。
測試成功!
shell指令 「 nohub 」
nohub sleep 1000
&
關閉當前終端,在另乙個終端裡面使用
ps aux | grep sleep
發現該程序依然存在。 Linux之守護程序
守護程序是在作業系統執行起來以後常駐記憶體的程序,這些程序默默的在後台進行這自己的工作,當然我們是發現不了的,在linux系統下我們可以使用命令來檢視 ps axj 引數a表示列出所有使用者的程序,引數x表示列出控制終端的和沒有控制終端,引數j列出與作業控制相關的資訊 tpgid那一行為 1的表示沒...
Linux之 守護程序
linux系統啟動時會啟動很多系統服務程序,比如inetd,這些系統服務程序沒有控制終端,不能直接和使用者互動。其它程序都是在使用者登入或執行程式時建立,在執行結束或使用者登出時終止,但系統服務程序不受使用者登入登出的影響,它們一直在執行著。這種程序有乙個名稱叫守護程序 daemon 下面我們用ps...
Linux之守護程序
想實現的目標是通過守護程序monit監控另外乙個程序videocheck是否執行,如果videocheck關閉,則由守護程序重新啟動videocheck程序 本身使用的系統是ubuntu 14.04 monit的 如下 include include include include include ...