簡體   English   中英

Linux中的流程分叉

[英]Process fork in linux

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

int main(){ 
pid_t pid;
int num_coconuts = 17;
pid = fork();

if(pid == 0) { 
    num_coconuts = 42; 
    exit(0); 
} else { 
    wait(NULL);  }
}

printf("I see %d coconuts!\n", num_coconuts);
exit(0);
}

結果是“我看到17個椰子”。 為什么pid == 0時num_coconuts沒有變化?

讓我們觀察一下代碼的作用:

  1. 您設置num_coconuts = 17
  2. 您分叉並獲得一個新的過程。
  3. 您檢查進程是子進程( pid == 0)還是父進程( pid != 0 )。
  4. 在子進程中,您設置num_coconuts = 42但隨后您立即退出。
  5. 您打印num_coconuts

如您所見,您的子進程永遠無法達到5.,因為您在步驟4中退出。刪除exit() ,您將獲得兩個椰子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM