fork程序相關

2021-08-15 05:12:58 字數 1337 閱讀 8728

#include 

#include

#include

#include

#include

int main(int argc, char *argv)

if(pid == 0)

}

}else

if(pid > 0)

}

return

0;

}

列印如下。

i am father

i am son

i am father

i am son

i am son

i am father

i am son

i am son

i am son

i am son

i am son

i am son

i am son

i am son

i am son

i am son

i am son

看一下最基礎的fork程序程式

#include 

#include

#include

int main(void)

else

return

0;}

在父程序加上sleep函式,則子程序先執行結束,父程序後執行結束。列印如下。

init pid is

7758

this

is child, and child pid is

7759,father pid is

7758

this

is father, and child pid is

7759,father pid is

7758

去掉父程序的sleep函式,並在子程序中加上sleep,列印如下。

init pid is

7789

this

is father, and child pid is

7790,father pid is

7789

this

is child, and child pid is

7790,father pid is

1

則由上可知。父程序先結束,子程序成了孤兒程序,系統將其託孤給了1(init)程序,所以程序號改為1。

其中,getpid返回當前程序標識,getppid返回父程序標識。

fork程序建立

fork建立子程序,fork函式返回兩個值,當為0時,則認為是子程序 塊執行區域,而不為0則是父程序 塊執行區域。我們需要知道的是,fork子程序可以與父程序共享部分程序上下文,而與此不同的是execl函式,一旦開始執行到execl函式時,啟動被呼叫的函式,後面的 則不再執行,而是直接執行呼叫的程式...

fork建立程序

1.程序的建立 fork 函式是建立子程序的函式,在主函式中呼叫fork會產生乙個子程序 列印出來的結果是 if語句是條件語句但卻兩個都列印了,兩個條件都滿足,也就是說兩個都執行,但卻不是一條執行流,那麼可以得出肯定還有乙個程序在列印另乙個。都記得fork 之後有兩個程序,乙個父程序,乙個子程序,父...

fork 程序 pthread create執行緒

introduction details 乙個程序就相當於乙個主線程。fork乙個程序與create乙個執行緒的區別 fork程序 子程序複製父程序的程序環境。父程序結束不會影響子程序的執行。程序切換複製程序環境。create執行緒 子執行緒共享父執行緒的執行緒環境。執行緒 乙個主線程下的多個執行緒...