父程序用fork建立子程序之後,父子程序之間有什麼關係

2022-04-01 15:18:58 字數 2713 閱讀 3964

1樓:老球痞

fork操作之後,父程序和子程序到底發生了什麼?

子程序從拷貝了哪些資訊?從**開始執行?這些答案在《unix系統程式設計》第24章程序的建立

有很好的回答。

fork之後父子程序同時從fork點開始執行、父子程序共享**段,資料段都是完全拷貝,相互之間的更改不會影響。

但是值得注意的是socket是共享的

我之前遇到過socket共享所導致的問題,所以如果你要想用fork,得弄清楚這些

推薦看《unix系統程式設計》第24章程序

2樓:程式設計師老四

fork呼叫的乙個奇妙之處就是它僅僅被呼叫一次,卻能夠返回兩次,它可能有三種不同的返回值:

1)在父程序中,fork返回新建立子程序的程序id;

2)在子程序中,fork返回0;

3)如果出現錯誤,fork返回乙個負值;

在fork函式執行完畢後,如果建立新程序成功,則出現兩個程序,乙個是子程序,乙個是父程序。在子程序中,fork函式返回0,在父程序中,fork返回新建立子程序的程序id。我們可以通過fork返回的值來判斷當前程序是子程序還是父程序。

引用一位網友的話來解釋fpid的值為什麼在父子程序中不同。「其實就相當於鍊錶,程序形成了鍊錶,父程序的fpid(p 意味point)指向子程序的程序id, 因為子程序沒有子程序,所以其fpid為0.

父程序用fork建立子程序之後,父子程序之間有什麼關係?

3樓:程式設計師老四

fork呼叫的乙個奇妙之處就是它僅僅被呼叫一次,卻能夠返回兩次,它可能有三種不同的返回值:

1)在父程序中,fork返回新建立子程序的程序id;

2)在子程序中,fork返回0;

3)如果出現錯誤,fork返回乙個負值;

在fork函式執行完畢後,如果建立新程序成功,則出現兩個程序,乙個是子程序,乙個是父程序。在子程序中,fork函式返回0,在父程序中,fork返回新建立子程序的程序id。我們可以通過fork返回的值來判斷當前程序是子程序還是父程序。

引用一位網友的話來解釋fpid的值為什麼在父子程序中不同。「其實就相當於鍊錶,程序形成了鍊錶,父程序的fpid(p 意味point)指向子程序的程序id, 因為子程序沒有子程序,所以其fpid為0.

4樓:小周愛嘮叨

乙個程序通過fork()函式建立乙個新的程序,兩者關係為父子關係,子程序擁有和父程序幾乎但又不完全一樣。兩者擁有相同但又相互獨立的位址空間,是可以併發執行的獨立程序,兩者最大的差別就是程序id不一樣。

編寫乙個程式,程式中建立乙個子程序,然後父子程序各自獨立執行。

5樓:匿名使用者

#include

#include

#include

#define bufsize 10

int main(void)

if((childpid = fork()) == -1)//建立子程序

if(childpid!=0)//父程序

while(ch!='x');//遇到'x'則結束}else if(childpid==0)//子程序else if(dh>='a'&&dh<='z')else }}}

6樓:灰姑娘的霸氣

比如有乙個下拉框定義如下:

那麼可以利用以下方法來獲取值:

方法一:

var ddl = document.getelementbyid("ddlbuscode")

var index = ddl.seletedindex;

var value = ddl.options[index].value;

var text = ddl.options[index].text;

方法二:

var aaa=ddlbuscode.options[this.selectedindex].value;

7樓:匿名使用者

windows還是linux?

linux系統的 父子程序,fork(),分析下列的程式執行後,父程序和子程序的輸出分別是什麼?

8樓:

對於父程序 fork返回的值是子程序的pid號,不為0; 輸出 0;

子程序 fork返回值是 0;輸出是2; 子程序看自己的程序號用getpid(),看父程序號用getppid();

9樓:

子程序輸出2,父程序輸出0吧

linux 中的多程序中,父程序與子程序共享的**段和資料段、堆疊段,是整個程式還是出現在fork()函式後?

10樓:梁偉明此生不換

首先來說 不是共享 共享是同乙個區域 但是fork後相當於複製了乙份 也就相當於乙個副本 所以 在以後的程式執行 父程序改變父程序的資料 子程序改變子程序的資料 所以不能說共享 他們相同的是整個程式 差不多就相當於是兩個相同的程式在執行

共享資料是執行緒 建立乙個執行緒後他們的資料是共享的 他們是同乙個資料

11樓:匿名使用者

共享是同乙個區域 但是fork後相當於複製了乙份 也就相當於乙個副本 所以 在以後的程式執行 父程序改變父程序的資料 子程序改變子程序的資料 所以不能說共享 他們相同的是整個程式

用C寫程序管理程式,要含有程序的建立,程序執行,喚出某個

給思路來 自己寫,不想源寫的話,網上開源的程序管理器很多了1.程序的建立 createprocess 呼叫該函式就可以了2 程序的執行,沒聽過應該是執行乙個exe檔案把,可以使用方法1或者使用shellexcutexx函式 3.喚出某個程序,說真的第一次聽說 4.結束某個指定的程序,只要呼叫open...

怎樣用c建立簡單程序怎樣用c建立乙個簡單程序

include int main 用createprocess 用法見msdn 以下迴圈開啟記事本 startupinfo startupinfo startupinfo.cb sizeof startupinfo process information process info for int i...

C 在windows下程序建立呼叫什麼命令

createprocess 建立程序 createthread 建立執行緒 具體請查閱msdn include define path c windows notepad.exe 設定程序呼叫的引數專 屬startupinfo si si.cb sizeof startupinfo si.dwfla...