1. 每個程序組有1個或多個程序組成,可能有乙個程序組長,也可能沒有
2. 每個會話有1個或多個程序組組成,可能有乙個領頭程序,也可能沒有
好,貼上測試**:
1#include
<
stdio.h
>
2 #include
<
unistd.h
>
3 #include
<
stdlib.h
>
4 #include
<
sys/
param.h
>
5 #include
<
sys/
stat.h
>
6 #include
<
sys/
types.h
>
7 #include
<
fcntl.h
>
8 #include
<
signal.h
>
9
10
intmain(
intargc,
char
*argv)
得到檔案 /root/proc.txt
內容如下:
1pid
=9002
, ppid
=8944
, sid
=8944
, pgrp
=9002
//parent
2
pid
=9003
, ppid =1
, sid
=8944
, pgrp
=9002
//fork[1]
3 pid
=9003
, ppid =1
, sid
=9003
, pgrp
=9003
//setsid()
4 pid
=9004
, ppid =1
, sid
=9003
, pgrp
=9003
//fork[2]
第一行即為從bash中執行的父程序,pid=9002,ppid即為bash的pid,sid=bash的pid,每個從bash中啟動的程序為乙個單獨的程序組
第二行是parent fork出來的子程序,姑且叫它fork[1],因為父程序的exit(0),那麼它的ppid=1(init程序pid)
第三行由於setsid的執行,是fork[1]建立了乙個新的會話,它也成為了會話中的乙個程序的程序組長,同時是會話領頭程序,pid=sid=pgrp=9003
第四行是第二次fork後的結果,意味著新會話9003的領頭程序的結束並沒有有使其他的程序結束,9004的sid=pgrp=9003
Linux程序間關係
程序組 每乙個程序除了自己的程序id,還有自己的程序組id。程序組由乙個或多個程序組成。通常它們與作業相關聯,可以接受同一終端的各種訊號。在程序組中程序id與程序組id相同的為程序組長 組長程序可以建立乙個程序組,建立該組中的程序,然後終止。只要在某個程序組中乙個程序存在,則該程序組就存在,這與其組...
Linux 程序間關係 守護程序
ps axj head n 1乙個或多個程序的集合 只要在某個程序組中 個程序存在,則該程序組就存在,這與其組 程序是否終 關。個前台作業可以由多個程序組成 乙個後台也可以由多個程序組成 作業與程序組的區別 a.out sid 會話 session 是 個或多個程序組的集合。建 與控制終端連線的會話...
Linux 程序間關係和守護程序
程序組是乙個或多個程序的集合。通常與乙個作業相關聯,可以接收來自同一終端的各種訊號。我們知道,每個程序都有乙個程序id存放在task struct中,程序組也有程序組id,是唯一的。乙個執行緒組擁有主線程,主線程id就是執行緒組id,類似地,程序組也有乙個組長程序,組長程序的id就是程序組id。組長...