1、你是父進程創(chuàng)建了一個子進程,在子進程中又創(chuàng)建了一個子進程(這個子進程是原本的父進程的孫子進程),所以原本的父進程只有一個子進程,當(dāng)你輸出第二個的時候,當(dāng)然就是返回默認值-1了。

阜新網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,阜新網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為阜新1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的阜新做網(wǎng)站的公司定做!
2、第一次fork產(chǎn)生1個子進程,父進程的pid1為3411,子進程的pid1為0。此時已存在兩個進程。
3、fork創(chuàng)建一個進程,子進程是對父進程的復(fù)制,他們有相同的代碼段和數(shù)據(jù)段等。fork執(zhí)行一次返回兩次(pid == 0則返回的是子進程,pid 0,返回的是子進程的pid),所以if和else都會執(zhí)行了。
1、fork---fork---fork加入進程Afork出了進程B,然后進程B又fork出了進程C,進程C又fork出了進程Dpipe是管道,只有一個入口,一個出口。可以把入口和出口分別放到父子進程中。父進程負責(zé)讀,子進程負責(zé)寫。
2、execv會停止執(zhí)行當(dāng)前的進程,并且以progname應(yīng)用進程替換被停止執(zhí)行的進程,進程ID沒有改變。
3、去看看execvp()函數(shù)的API, 里面講得是這樣的, 它的第一個參數(shù)代表它要執(zhí)行文件的位置, 第二個參數(shù)是命令 execvp()搜索的PATH環(huán)境變量中指定的目錄中的ls命令的位置,而傳遞參數(shù)的ls命令在argv中。
4、fork一般用于處理多線程任務(wù)。比如在網(wǎng)絡(luò)中,你需要同時發(fā)送多種請求報文,則可以fork出子進程來進行發(fā)包任務(wù),而父進程則直接去做自己的邏輯任務(wù)。學(xué)習(xí)函數(shù)可以從功能入手,看它能夠?qū)崿F(xiàn)那些特定的需求。
1、while((p1=fork())==-1);目的是:將fork的返回值賦給p1;如果函數(shù)失敗則再次調(diào)用,直到成功為止。
2、while(1)是一個循環(huán),如果不遇到break之類的就成死循環(huán)了,括號中的1表示條件為真時循環(huán),如果是0則表示條件為假時循環(huán)。
3、c語言下,while()括號里面放的是循環(huán)的條件,若是真,則循環(huán);否則,停止。1)任何非零的整數(shù)都是為真的,所以while(1)和 while(2)和 while(3)等都是一個意思。2)若是指針的話,NULL則為假,反之則為真。
4、C語言中while的用法解析如下:1表示true,在bool類型取值false和true,0為false,非0為true(例如-1和2都是true)。程序中,這里1就表示永真,直到循環(huán)體內(nèi)遇到break。
5、c 語言中: 1表示邏輯值真, 0表邏輯值假,while(1) 小括號里,一般寫邏輯表達式。 C語言廣泛應(yīng)用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。
網(wǎng)站標(biāo)題:c語言fork()函數(shù) c語言fork函數(shù)創(chuàng)建兩個程序
鏈接URL:http://chinadenli.net/article19/dedgodh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、軟件開發(fā)、網(wǎng)站設(shè)計公司、網(wǎng)頁設(shè)計公司、自適應(yīng)網(wǎng)站、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)