程序程式設計3 UNIX高階環境程式設計第9章讀書筆記

2021-04-14 02:19:54 字數 3960 閱讀 7239

2023年03月25日 22:03:00

9 process relationships

1.每個程序屬於乙個

process group

,這個process group

從同樣的

terminal

獲得signal

2.getpgrp

可以獲得

process group id

,也用pid_t

結構表示:

#include >unistd.h<

pid_tgetpgrp(void);

返**用程序所屬於的

process group id

3.getpgid

可以獲得某個程序的

process group id

#include >unistd.h<

pid_tgetpgid(pid_t pid);

返回pid制定的程序所屬於的

process group id

如果引數

pid = 0

,則返**用程序所屬的

processgroup的id

4.每個

group

都有乙個

leader

,這個leader

的processid = process group id

5.乙個程序呼叫

setpgid

來參加或者建立乙個

process group

: #include >unistd.h<

intsetpgid(pid_t pid, pid_t pgid);

成功返回

0,錯誤返回

-1

注意如果

pid=pgid

,則指定程序成為

process group leader

如果pid=0

,則指定程序為呼叫程序

1.session

是乙個或者多個

process group

2.呼叫

setsid

函式來建立乙個新的

session

#include >unistd.h<

intsetsid(void);

成功返回

0,錯誤返回

-1 3.

呼叫setsid

函式,如果該程序不是

process group leader

,則函式會建立乙個新的

session

a.程序成為

session

的session leader

b.成為新的

process group

的leader

c.程序沒有

controlling terminal

4.single unix specification

沒有session id

,不過我們可以認為乙個

session

的session leader

的process id = session id

5.getsid

可以獲得

session id

: #include >unistd.h<

pid_tgetsid(pid_t pid);

成功返回

session leader

的process id

,錯誤返回

-1

同樣的,

pid = 0

標明是呼叫程序

session

和process group

有下面特性:

1.session

只能有乙個

controlling terminal

2.session leader

和controlling terminal

建立聯絡,稱之為

controlling process

3.session

中的process group

可以被分為乙個

foreground process group

和多個background process group

4.按下

interrupt key (delete or ctrl+c)

或者quit key (ctrl+/)

,signal

會傳送給

foreground process group

中的所有

process

5.如果

network/modem disconnect

被檢測到,則

controlling process

會收到乙個

hang-up signal

6.大部分時候

controlling terminal

就是我們

login

時候的terminal

1.下面這些函式可以被用來

告訴kernel

那些process group

是foreground

,那些是

background

: #include >unistd.h<

pid_ttcgetpgrp(int filedes);

成功返回

foreground process group的id

,錯誤返回

-1

inttcsetpgrp(int filedes, pid_t pgrpid);

成功返回

0,錯誤返回

-1 2.

tcgetpgrp

返回filedes

對應的terminal

的foreground process group id

,而tcsetpgrp

可以設定

foreground process group id

3.tcgetsid

函式可以獲得

filedes

所對應的

session id

,也就是

session leader

的process group id

#include >termios.h<

pid_ttcgetsid(int filedes);

成功返回

session id

,錯誤返回

-1

程序程式設計

1 – unix

高階環境程式設計

7章讀書筆記

程序程式設計2 – unix環境高階程式設計8章讀書筆記

程序程式設計3 - unix高階環境程式設計第9章讀書筆記

unix訊號(signal)程式設計 - unix高階環境程式設計第10章讀書筆記

使用pthread

庫進行多執行緒程式設計

1 - unix

環境高階程式設計第

11章讀書筆記

使用pthread

庫進行多執行緒程式設計

2 - unix

高階環境程式設計第

12章讀書筆記

作者: atfield

程序程式設計3 UNIX高階環境程式設計第9章讀書筆記

9 process relationships 1.每個程序屬於乙個 process group 這個process group 從同樣的 terminal 獲得signal 2.getpgrp 可以獲得 process group id 也用pid t 結構表示 include pid tgetp...

程序程式設計3 UNIX高階環境程式設計第9章讀書筆記

9 process relationships 1.每個程序屬於乙個 process group 這個process group 從同樣的 terminal 獲得signal 2.getpgrp 可以獲得 process group id 也用pid t 結構表示 include pid tgetp...

程序程式設計3 UNIX高階環境程式設計第9章讀書筆記

9 process relationships 1.每個程序屬於乙個 process group 這個process group 從同樣的 terminal 獲得signal 2.getpgrp 可以獲得 process group id 也用pid t 結構表示 include pid tgetp...