欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2022年08月26日 16:58:04   作者:小小酥誒  
傳統(tǒng)的C++(C++98)中并沒有引入線程這個概念。linux和unix操作系統(tǒng)的設(shè)計采用的是多進程,進程間的通信十分方便,同時進程之間互相有著獨立的空間,不會污染其他進程的數(shù)據(jù),天然的隔離性給程序的穩(wěn)定性帶來了很大的保障

進程的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、因為提供服務而創(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,則表示為父進程

到此這篇關(guān)于C++進程的創(chuàng)建和進程ID標識詳細介紹的文章就介紹到這了,更多相關(guān)C++進程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中命名空間的概念及使用詳解

    C++中命名空間的概念及使用詳解

    這篇文章主要介紹了C++中命名空間的概念及使用詳解,使用命名空間的目的是對標識符的名稱進行本地化,以避免命名沖突或名字污染,namespace關(guān)鍵字就是針對這種問題而出現(xiàn)的,需要的朋友可以參考下
    2023-08-08
  • Qt實現(xiàn)定時器的兩種方法分享

    Qt實現(xiàn)定時器的兩種方法分享

    這篇文章主要為大家詳細介紹了Qt中實現(xiàn)定時器的兩種不同方法,文中的示例代碼講解詳細,對我們了解Qt有一定的幫助,感興趣的可以跟隨小編一起學習一下
    2022-11-11
  • C語言中求余運算符的使用解讀

    C語言中求余運算符的使用解讀

    這篇文章主要介紹了C語言中求余運算符的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 利用C語言解決八皇后問題以及解析

    利用C語言解決八皇后問題以及解析

    這篇文章主要給大家介紹了關(guān)于利用C語言解決八皇后問題以及解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • Matlab實現(xiàn)讀寫txt文件數(shù)據(jù)與進制轉(zhuǎn)換

    Matlab實現(xiàn)讀寫txt文件數(shù)據(jù)與進制轉(zhuǎn)換

    這篇文章主要為大家詳細介紹了Matlab實現(xiàn)讀寫txt文件數(shù)據(jù)與進制轉(zhuǎn)換的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • C++中實現(xiàn)子進程執(zhí)行和管道通信詳解

    C++中實現(xiàn)子進程執(zhí)行和管道通信詳解

    在這篇博客中,我們將深入探索如何在 C++ 程序中實現(xiàn)子進程的創(chuàng)建與執(zhí)行,以及父子進程間的管道通信,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-01-01
  • cmake跨平臺構(gòu)建工具的學習筆記

    cmake跨平臺構(gòu)建工具的學習筆記

    CMake是一個跨平臺的安裝/編譯工具,通過CMake我們可以通過簡單的語句來描述所有平臺的安裝/編譯過程,下面這篇文章主要給大家介紹了關(guān)于cmake跨平臺構(gòu)建工具的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • C++簡單實現(xiàn)shared_ptr的代碼

    C++簡單實現(xiàn)shared_ptr的代碼

    智能指針用于資源管理,為了保證資源的操作得到順利的執(zhí)行防止資源泄露,因此大多數(shù)實現(xiàn)都以noexcept在參數(shù)列表后聲明為不拋出異常,這篇文章主要介紹了C++簡單實現(xiàn)shared_ptr的代碼,需要的朋友可以參考下
    2022-09-09
  • C++實操之內(nèi)聯(lián)成員函數(shù)介紹

    C++實操之內(nèi)聯(lián)成員函數(shù)介紹

    大家好,本篇文章主要講的是C++實操之內(nèi)聯(lián)成員函數(shù)介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C語言 動態(tài)內(nèi)存開辟常見問題解決與分析流程

    C語言 動態(tài)內(nèi)存開辟常見問題解決與分析流程

    動態(tài)內(nèi)存是相對靜態(tài)內(nèi)存而言的。所謂動態(tài)和靜態(tài)就是指內(nèi)存的分配方式。動態(tài)內(nèi)存是指在堆上分配的內(nèi)存,而靜態(tài)內(nèi)存是指在棧上分配的內(nèi)存
    2022-03-03

最新評論