日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

C++進程的創(chuàng)建和進程ID標識詳細介紹_C 語言

作者:小小酥誒 ? 更新時間: 2022-10-23 編程語言

進程的ID

進程的ID,可稱為PID。它是進程的唯一標識,類似于我們的身份證號是唯一標識,因為名字可能會和其他人相同,生日可能會與其他人相同……大多數(shù)的事件都可能會與其他人相同,而身份證號每個人都是不一樣的,這是社會中自己的唯一標識。

當進程被創(chuàng)建的時候,系統(tǒng)就自動分配給進程一個唯一的PID,PID是正數(shù)。

在Linux中有兩個系統(tǒng)調(diào)用函數(shù),可以獲取進程的ID。

  pid_t getpid(void); //獲取進程ID(PID)
  pid_t getppid(void);//獲取其父進程ID(PPID)

所需頭文件

# include <sys/types.h>
# include <unistd.h>

getpid()返回的時調(diào)用該函數(shù)的進程的PID,getppid()返回的是調(diào)用該函數(shù)的進程的父進程ID(PPID),返回值類型是pid_t,實際上是無符號整型,這兩個函數(shù)不會出現(xiàn)調(diào)用失敗的情況

開始測試……

  //mycode.c文件
# include <stdio.h>
# include <sys/types.h>
# include <unistd.h>
int main(void)
{
  //創(chuàng)建子進程
  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;
}

//運行結(jié)果
i am parent, my id is 1593
i am child, my id is 7048

進程創(chuàng)建

【進程創(chuàng)建的主要事件】

1、新的批處理作業(yè)

2、由進程派生出一個進程

3、因為提供服務(wù)而創(chuàng)建

4、交互登錄

操作系統(tǒng)創(chuàng)建進程包含的步驟

1、分配唯一的進程標識符

2、分配空間

3、初始化進程控制塊(PCB)

4、修改連接

5、創(chuàng)建/擴充其他數(shù)據(jù)結(jié)構(gòu)

對于“修改連接”,操作系統(tǒng)會把調(diào)度隊列保存成某些數(shù)據(jù)結(jié)構(gòu),新的進程需要放置在數(shù)據(jù)結(jié)構(gòu)里,所以需要重新連接。

在Linux系統(tǒng)中,可以創(chuàng)建新進程的系統(tǒng)調(diào)用函數(shù)只有一個fork

#include <unistd.h>
 pid_t fork(void);

描述:

fork()函數(shù)可以創(chuàng)建子進程,所需的頭文件為unistd.h, 返回兩次。

  • 如果返回的是0,則表示為子進程
  • 如果返回的是非0,則表示為父進程

原文鏈接:https://blog.csdn.net/qq_56870066/article/details/125091174

欄目分類
最近更新