<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

3.使用實(shí)例

本實(shí)例說(shuō)明的概念以及基本用法。在實(shí)例程序中,首先創(chuàng )建一個(gè)子進(jìn)程,接下來(lái)使用來(lái)控制兩個(gè)進(jìn)程(父子進(jìn)程)之間的執行順序。

因為相關(guān)的函數調用接口比較復雜,我們可以將它們封裝成二維單個(gè)信號量的幾個(gè)基本函數。它們分別為信號量初始化函數(或者信號量賦值函數)init_sem()、P操作函數sem_p()、V操作函數sem_v()以及刪除信號量的函數del_sem()等,具體實(shí)現如下所示:

/*sem_com.c*/

#includesem_com.h

/*信號量初始化(賦值)函數*/

intinit_sem(intsem_id,intinit_value)

{

unionsemunsem_union;

sem_union.val=init_value;/*init_value為初始值*/

if(semctl(sem_id,0,SETVAL,sem_union)==-1)

{

perror(Initializesemaphore);

return-1;

}

return0;

}

/*從系統中刪除信號量的函數*/

intdel_sem(intsem_id)

{

unionsemunsem_union;

if(semctl(sem_id,0,IPC_RMID,sem_union)==-1)

{

perror(Deletesemaphore);

return-1;

}

}

/*P操作函數*/

intsem_p(intsem_id)

{

structsembufsem_b;

sem_b.sem_num=0;/*單個(gè)信號量的編號應該為0*/

sem_b.sem_op=-1;/*表示P操作*/

sem_b.sem_flg=SEM_UNDO;/*系統自動(dòng)釋放將會(huì )在系統中殘留的信號量*/

if(semop(sem_id,sem_b,1)==-1)

{

perror(Poperation);

return-1;

}

return0;

}

/*V操作函數*/

intsem_v(intsem_id)

{

structsembufsem_b;

sem_b.sem_num=0;/*單個(gè)信號量的編號應該為0*/

sem_b.sem_op=1;/*表示V操作*/

sem_b.sem_flg=SEM_UNDO;/*系統自動(dòng)釋放將會(huì )在系統中殘留的信號量*/

if(semop(sem_id,sem_b,1)==-1)

{

perror(Voperation);

return-1;

}

return0;

}

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

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




評論


相關(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>