C++進程的創建和進程ID標識詳細介紹
進程的ID
進程的ID,可稱為PID。它是進程的唯一標識,類似於我們的身份證號是唯一標識,因為名字可能會和其他人相同,生日可能會與其他人相同……大多數的事件都可能會與其他人相同,而身份證號每個人都是不一樣的,這是社會中自己的唯一標識。
當進程被創建的時候,系統就自動分配給進程一個唯一的PID,PID是正數。
在Linux中有兩個系統調用函數,可以獲取進程的ID。
pid_t getpid(void); //獲取進程ID(PID) pid_t getppid(void);//獲取其父進程ID(PPID)
所需頭文件
# include <sys/types.h> # include <unistd.h>
getpid()
返回的時調用該函數的進程的PID,getppid()
返回的是調用該函數的進程的父進程ID(PPID),返回值類型是pid_t
,實際上是無符號整型,這兩個函數不會出現調用失敗的情況
開始測試……
//mycode.c文件 # include <stdio.h> # include <sys/types.h> # include <unistd.h> int main(void) { //創建子進程 pid_t id = fork(); if(id == 0) { //子進程 printf("i am child, my id is %d\n",getpid()); } else{ //父進程 printf("i am parent, my id is %d\n",getppid()); } return 0; }
//運行結果
i am parent, my id is 1593
i am child, my id is 7048
進程創建
【進程創建的主要事件】
1、新的批處理作業
2、由進程派生出一個進程
3、因為提供服務而創建
4、交互登錄
操作系統創建進程包含的步驟
1、分配唯一的進程標識符
2、分配空間
3、初始化進程控制塊(PCB)
4、修改連接
5、創建/擴充其他數據結構
對於“修改連接”,操作系統會把調度隊列保存成某些數據結構,新的進程需要放置在數據結構裡,所以需要重新連接。
在Linux系統中,可以創建新進程的系統調用函數隻有一個fork
#include <unistd.h> pid_t fork(void);
描述:
fork()函數可以創建子進程,所需的頭文件為unistd.h, 返回兩次。
- 如果返回的是0,則表示為子進程
- 如果返回的是非0,則表示為父進程
到此這篇關於C++進程的創建和進程ID標識詳細介紹的文章就介紹到這瞭,更多相關C++進程內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!