進程控制之進程標識符


每個進程都有一個非負整型表示的唯一進程ID。因為進程ID標識符總是唯一的,常將其用作其他標識符的一部分以保證其唯一性。例如,應用程序有時就把進程ID作為名字的一部分來創建一個唯一的文件名。

雖然是唯一的,但是進程ID可以重用當一個進程終止后,其進程ID就可以再次使用了。大多數UNIX系統實現延遲重用算法,使得賦予新建進程的ID不同於最近終止進程所使用的ID。這防止了將新進程誤認為是使用同一ID的某個已終止的先前進程。

系統中有一些專用的進程,但具體細節因實現而異。ID為0的進程通常是調度進程,常常被稱為交換進程(swapper)。該進程是內核的一部分,它並不執行磁盤上的任何程序,因此也被稱為系統進程。進程ID 1通常是init進程,在自舉(bootstrap)過程結束時由內核調用。此進程負責在自舉內核后啟動一個UNIX系統。init通常讀與系統有關的初始化文件(/etc/rc*文件或/etc/inittab文件,以及/etc/init.d中的文件),並將系統引導到一個狀態(例如多用戶)。init進程絕不會終止它是一個普通的用戶進程(與交換進程不同,它不是內核中的系統進程),但是它以超級用戶特權運行

除了進程ID,每個進程還有一些其他的標識符。下列函數返回這些標識符。

#include <unistd.h>

pid_t getpid( void );
返回值:調用進程的進程ID

pid_t getppid( void );
返回值:調用進程的父進程ID

uid_t getuid( void );
返回值:調用進程的實際用戶ID

uit_t geteuid( void );
返回值:調用進程的有效用戶ID

gid_t getgid( void );
返回值:調用進程的實際組ID

gid_t getegid( void );
返回值:調用進程的有效組ID

注意,這些函數都沒有出錯返回。

本篇博文內容摘自《UNIX環境高級編程》(第二版),僅作個人學習記錄所用。關於本書可參考:http://www.apuebook.com/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM