需要有一種方法來通知內核哪一個進程組是前臺進程組,這樣,終端設備驅動程序就能了解將終端輸入和終端產生的信號送到何處。
#include <unistd.h>pid_t tcgetpgrp( int filedes );返回值:若成功則返回前臺進程組的進程組ID,若出錯則返回-1int tcsetpgrp( int filedes, pid_t pgrpid );返回值:若成功則返回0,若出錯則返回-1
函數tcgetpgrp返回前臺進程組的進程組ID,該前臺進程組與在filedes上打開的終端相關聯。
如果進程有一個控制終端,則該進程可以調用tcsetpgrp將前臺進程組ID設置為pgrpid。pgrpid的值應當是在同一個會話中的一個進程組的ID。filedes必須引用該會話的控制終端。
大多數應用程序并不直接調用這兩個函數。它們通常由作業控制shell調用。
Single UNIX Specification定義了稱為tcgetsid的XSI擴展,給出控制TTY的文件描述符,應用程序就能獲得會話首進程的進程組ID。
#include <termios.h>pid_t tcgetsid( int filedes );返回值:若成功則返回會話首進程的進程組ID,若出錯則返回-1
需要管理控制終端的應用程序可以調用tcgetsid函數識別出控制終端的會話首進程的會話ID(它等價于會話首進程的進程組ID)。
本篇博文內容摘自《UNIX環境高級編程》(第二版),僅作個人學習記錄所用。關于本書可參考:http://www.apuebook.com/。
新聞熱點
疑難解答