主頁 > 知識(shí)庫 > Linux 編程之進(jìn)程fork()詳解及實(shí)例

Linux 編程之進(jìn)程fork()詳解及實(shí)例

熱門標(biāo)簽:益陽400電話申請(qǐng)辦理流程 地圖標(biāo)注人員分布 上海機(jī)器人外呼系統(tǒng)哪家好 怎么用百度地圖標(biāo)注坐標(biāo) 江西全自動(dòng)外呼系統(tǒng)報(bào)價(jià) 春運(yùn)地圖標(biāo)注app 400的電話一般從哪里辦理 梧州防封電銷卡 昆明電銷機(jī)器人價(jià)格

Linux fork()詳解:

在開始之前,我們先來了解一些基本的概念:

1. 程序, 沒有在運(yùn)行的可執(zhí)行文件  

   進(jìn)程,  運(yùn)行中的程序   

2. 進(jìn)程調(diào)度的方法:  

    按時(shí)間片輪轉(zhuǎn)  
    先來先服務(wù) 
    短時(shí)間優(yōu)先 
    按優(yōu)先級(jí)別   

3. 進(jìn)程的狀態(tài):       

        就緒   ->>   運(yùn)行  ->> 等待 
        運(yùn)行 ->> 就緒 //時(shí)間片完了 
        等待 ->> 就緒 //等待的條件完成了   

查看當(dāng)前系統(tǒng)進(jìn)程的狀態(tài) ps auxf 

status: 

D    Uninterruptible sleep (usually IO) 
R    Running or runnable (on run queue) 
S    Interruptible sleep (waiting for an event to complete) 
T    Stopped, either by a job control signal or because it is being traced. 
W    paging (not valid since the 2.6.xx kernel) 
X    dead (should never be seen) 
Z    Defunct ("zombie") process, terminated but not reaped by its parent. 
    high-priority (not nice to other users) 
N    low-priority (nice to other users) 
L    has pages locked into memory (for real-time and custom IO) 
s    is a session leader 
l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do) 
+    is in the foreground process group   

4. 父進(jìn)程/子進(jìn)程 , 讓一個(gè)程序運(yùn)行起來的進(jìn)程就叫父進(jìn)程, 被調(diào)用的進(jìn)程叫子進(jìn)程   

5. getpid //獲取當(dāng)前進(jìn)程的進(jìn)程號(hào) 
   getppid //獲取當(dāng)前進(jìn)程的父進(jìn)程號(hào)   

6. fork //創(chuàng)建一個(gè)子進(jìn)程,創(chuàng)建出來的子進(jìn)程是父進(jìn)程的一個(gè)副本, 除了進(jìn)程號(hào),父進(jìn)程號(hào)不同。  

    子進(jìn)程從fork()后開始運(yùn)行, 它得到的fork返回值為0 
    父進(jìn)程得到的返回值為子進(jìn)程的進(jìn)程號(hào) 
    返回值為-1時(shí), 創(chuàng)建失敗

來看一個(gè)程序:

#include stdio.h> 
#include unistd.h> 
 
int main(void) 
{ 
  pid_t pid ;  
  //printf("hello world \n"); 
 
  //從fork開始就已經(jīng)產(chǎn)生子進(jìn)程 
  pid = fork();  //就已經(jīng)產(chǎn)生新的4G空間,復(fù)制空間 
  //創(chuàng)建出來的子進(jìn)程是父進(jìn)程的一個(gè)副本,除了進(jìn)程號(hào),父進(jìn)程號(hào)和子進(jìn)程號(hào)不同 
  //printf("hello kitty\n"); 
  if(pid == 0)   
  { 
    //子進(jìn)程運(yùn)行區(qū) 
 
    printf("child curpid:%d parentpid:%d \n" , getpid() , getppid()); 
    return 0 ;  
  } 
 
  //父進(jìn)程運(yùn)行區(qū) 
  printf("parent curpid:%d parentpid:%d \n" , getpid() , getppid()); 
 
  return 0 ;  
} 

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

您可能感興趣的文章:
  • 詳解linux中fork、vfork、clone函數(shù)的區(qū)別
  • Linux中fork()函數(shù)實(shí)例分析
  • 使用C語言的fork()函數(shù)在Linux中創(chuàng)建進(jìn)程的實(shí)例講解
  • 淺談Linux環(huán)境下并發(fā)編程中C語言fork()函數(shù)的使用
  • Linux中使用C語言的fork()函數(shù)創(chuàng)建子進(jìn)程的實(shí)例教程
  • C語言的fork函數(shù)在Linux中的進(jìn)程操作及相關(guān)面試題講解
  • 簡單掌握Linux系統(tǒng)中fork()函數(shù)創(chuàng)建子進(jìn)程的用法
  • Linux下C語言的fork()子進(jìn)程函數(shù)用法及相關(guān)問題解析
  • Linux系統(tǒng)中C語言編程創(chuàng)建函數(shù)fork()執(zhí)行解析
  • Linux 中fork的執(zhí)行的實(shí)例詳解

標(biāo)簽:九江 新疆 河南 惠州 亳州 北京 懷化 贛州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux 編程之進(jìn)程fork()詳解及實(shí)例》,本文關(guān)鍵詞  Linux,編程,之,進(jìn)程,fork,詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux 編程之進(jìn)程fork()詳解及實(shí)例》相關(guān)的同類信息!
  • 本頁收集關(guān)于Linux 編程之進(jìn)程fork()詳解及實(shí)例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章