<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)程間通信之: 信號量

進(jìn)程間通信之: 信號量

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

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

現在我們調用這些簡(jiǎn)單易用的接口,可以輕松解決控制兩個(gè)進(jìn)程之間的執行順序的同步問(wèn)題。實(shí)現代碼如下所示:

/*fork.c*/

#includesys/types.h>

#includeunistd.h>

#includestdio.h>

#includestdlib.h>

#includesys/types.h>

#includesys/ipc.h>

#includesys/shm.h>

#defineDELAY_TIME3/*為了突出演示效果,等待幾秒鐘,*/

intmain(void)

{

pid_tresult;

intsem_id;

sem_id=(ftok(.,'a'),1,0666|IPC_CREAT);/*創(chuàng )建一個(gè)*/

init_sem(sem_id,0);

/*調用fork()函數*/

result=fork();

if(result==-1)

{

perror(Forkn);

}

elseif(result==0)/*返回值為0代表子進(jìn)程*/

{

printf(Childprocesswillwaitforsomeseconds...n);

sleep(DELAY_TIME);

printf(Thereturnedvalueis%dinthechildprocess(PID=%d)n,

result,getpid());

sem_v(sem_id);

}

else/*返回值大于0代表父進(jìn)程*/

{

sem_p(sem_id);

printf(Thereturnedvalueis%dinthefatherprocess(PID=%d)n,

result,getpid());

sem_v(sem_id);

del_sem(sem_id);

}

exit(0);

}

讀者可以先從該程序中刪除掉相關(guān)的代碼部分并觀(guān)察運行結果。

$./simple_fork

Childprocesswillwaitforsomeseconds…/*子進(jìn)程在運行中*/

Thereturnedvalueis4185inthefatherprocess(PID=4184)/*父進(jìn)程先結束*/

[…]$Thereturnedvalueis0inthechildprocess(PID=4185)/*子進(jìn)程后結束了*/

再添加的控制部分并運行結果。

$./sem_fork

Childprocesswillwaitforsomeseconds…

/*子進(jìn)程在運行中,父進(jìn)程在等待子進(jìn)程結束*/

Thereturnedvalueis0inthechildprocess(PID=4185)/*子進(jìn)程結束了*/

Thereturnedvalueis4185inthefatherprocess(PID=4184)/*父進(jìn)程結束*/

本實(shí)例說(shuō)明使用信號量怎么解決多進(jìn)程之間存在的同步問(wèn)題。我們將在后面講述的共享內存和消息隊列的實(shí)例中,看到使用信號量實(shí)現多進(jìn)程之間的互斥。

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

數字通信相關(guān)文章:數字通信原理



上一頁(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>