一.簡介
本文主要介紹進程的基本屬性,基本屬性包含:進程ID、父進程ID、進程組ID、會話和控制終端
二.進程屬性
1.進程ID(PID)
每一個進程都有一個非負整型表示的唯一進程ID(PID).好比方我們的身份證一樣,每一個人的身份證號是唯一的.由於進程ID標示符總是唯一的,常將其用來做其它標示符的一部分以保證其唯一性。進程ID(PID)是無法在用戶層改動的.
在Linux系統中,PID為0 的進程一般是調度進程。經常被稱為交換進程,也是第一個系統進程.第一個用戶進程是init進程。其PID為1.
2.父進程ID(PPID)
不論什么進程(除init進程)都是由還有一個進程創建。該進程稱為被創建進程的父進程。被創建的進程稱為子進程。父進程ID無法在用戶層改動.父進程的進程ID即為子進程的父進程ID(PPID).
3.進程組ID(process group ID PGID)
在Linux系統中。每一個用戶都用戶ID(UID)和用戶組ID(GUID).相同,進程也擁有自己的進程ID(PID)和進程組ID(PGID). 進程組是一個或多個進程的集合;他們與同一作業相關聯.每一個進程組都有唯一的進程組ID(PGID),進程組ID(PGID)能夠在用戶層改動.比方。將某個進程加入到還有一個進程組,就是使用setpgid()函數改動其進程組ID.
一個進程僅僅能為自己或子進程設置進程組ID(PGID),假設在它的子進程中調用了exec()等系列函數,就不再能改變該子進程的進程組ID(PGID).
4.會話(session)
會話是一個或多個進程組的集合.系統調用函數getsid()用來獲取某個進程的會話ID(SID).
比如,我們通過 SSH 登錄服務器,就會打開一個控制終端(TTY),這個控制終端就對應一個會話。而我們在終端中運行的命令以及它們的子進程,就構成了一個個的進程組,其中,在后台運行的命令,構成后台進程組;在前台運行的命令,構成前台進程組。