linux程序間的關係

2021-06-16 06:21:32 字數 1596 閱讀 3426

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

內容如下:

1 

pid

=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。組長...