因為項目需要根據業務情況調整進程的調度策略和進程優先級,所以需要先獲取進程的ID。
在Linux操作系統中,如果要使用C語言獲取進程ID,可以利用兩個接口getppid()和getpid()來獲取進程ID,他們都是unistd.h庫中定義的內置函數。
一.getpid()函數
系統中的任何進程都有唯一的ID標識它們,創建它們的時候,它們也都會被分配唯一的ID。getpid()函數返回的是調用進程(即調用這個函數的進程)的進程ID。
基本的語法為:pid_t getpid(void);(pid_t是進程ID的類型,它是無符號整數類型的數據類型)
返回值:返回值的類型為int;返回值即為當前進程的進程ID;它永遠不會拋出任何錯誤,所以它總是成功的。
二.getppid()函數
getppid()函數用來返回調用進程的父進程ID。如果調用進程是用fork()函數創建的,並且在getppid()函數調用時其父進程還存在着,那么這個函數就會返回父進程的進程ID,否則就會返回一個值1,這個值是init進程的進程ID。
基本語法:pid_t getppid(void);
返回值:返回值的類型為Int;返回值為當前進程的父進程ID;它永遠不會拋出任何錯誤,因此總是成功的。
三.代碼說明
下面通過一段簡單的代碼說明一下Linux系統中使用C語言如何獲取調用進程ID和父進程。
輸出結果如下:
說明:頭文件
1. stdio:用於printf()函數的頭文件;
2. sys/types.h:用於pid_t類型,也就是用於存儲進程ID的變量的數據類型;
3. unistd.h:用於getpid和getppid函數。