<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 進(jìn)程控制開(kāi)發(fā)之:實(shí)驗內容

進(jìn)程控制開(kāi)發(fā)之:實(shí)驗內容

作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/257129.htm

7.4內容

7.4.1編寫(xiě)多進(jìn)程程序

1.目的

通過(guò)編寫(xiě)多進(jìn)程程序,使讀者熟練掌握f(shuō)ork()、exec()、wait()和waitpid()等函數的使用,進(jìn)一步理解在中多進(jìn)程編程的步驟。

2.內容

該實(shí)驗有3個(gè)進(jìn)程,其中一個(gè)為父進(jìn)程,其余兩個(gè)是該父進(jìn)程創(chuàng )建的子進(jìn)程,其中一個(gè)子進(jìn)程運行“ls-l”指令,另一個(gè)子進(jìn)程在暫停5s之后異常退出,父進(jìn)程先用阻塞方式等待第一個(gè)子進(jìn)程的結束,然后用非阻塞方式等待另一個(gè)子進(jìn)程的退出,待收集到第二個(gè)子進(jìn)程結束的信息,父進(jìn)程就返回。

3.實(shí)驗步驟

(1)畫(huà)出該實(shí)驗流程圖。

該實(shí)驗流程圖如圖7.8所示。

圖7.8實(shí)驗7.4.1流程圖

(2)實(shí)驗源代碼。

先看一下下面的代碼,這個(gè)程序能得到我們所希望的結果嗎,它的運行會(huì )產(chǎn)生幾個(gè)進(jìn)程?請讀者回憶一下fork()調用的具體過(guò)程。

/*multi_proc_wrong.c*/

#includestdio.h>

#includestdlib.h>

#includesys/types.h>

#includeunistd.h>

#includesys/wait.h>

intmain(void)

{

pid_tchild1,child2,child;

/*創(chuàng )建兩個(gè)子進(jìn)程*/

child1=fork();

child2=fork();

/*子進(jìn)程1的出錯處理*/

if(child1==-1)

{

printf(Child1forkerrorn);

exit(1);

}

elseif(child1==0)/*在子進(jìn)程1中調用execlp()函數*/

{

printf(Inchild1:execute'ls-l'n);

if(execlp(ls,ls,-l,NULL)0)

{

printf(Child1execlperrorn);

}

}

if(child2==-1)/*子進(jìn)程2的出錯處理*/

{

printf(Child2forkerrorn);

exit(1);

}

elseif(child2==0)/*在子進(jìn)程2中使其暫停5s*/

{

printf(Inchild2:sleepfor5secondsandthenexitn);

sleep(5);

exit(0);

}

else/*在父進(jìn)程中等待兩個(gè)子進(jìn)程的退出*/

{

printf(Infatherprocess:n);

child=waitpid(child1,NULL,0);/*阻塞式等待*/

if(child==child1)

{

printf(Getchild1exitcoden);

}

else

{

printf(Erroroccured!n);

}

do

{

child=waitpid(child2,NULL,WNOHANG);/*非阻塞式等待*/

if(child==0)

{

printf(Thechild2processhasnotexited!n);

sleep(1);

}

}while(child==0);

if(child==child2)

{

printf(Getchild2exitcoden);

}

else

{

printf(Erroroccured!n);

}

}

exit(0);

}

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>