自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Unix信號(hào)量常用的操作

系統(tǒng) 其他OS
文章中,我們會(huì)對(duì)Unix信號(hào)量的知識(shí)進(jìn)行介紹,系統(tǒng)調(diào)用semget用來(lái)把Unix信號(hào)量集合的鍵值譯成代表信號(hào)量集合的標(biāo)識(shí)符。

我們知道系統(tǒng)調(diào)用semget用來(lái)把Unix信號(hào)量集合的鍵值譯成代表信號(hào)量集合的標(biāo)識(shí)符,該集合中有count個(gè)元素,其存取權(quán)限定義與文件相同,由flags定義。若flags的IPC_CREAT位被置位,則當(dāng)該集合不存在時(shí)系統(tǒng)就創(chuàng)建之。

因此各進(jìn)程可都用置IPC_CREAT位的flags參數(shù)來(lái)獲取信號(hào)量集合的標(biāo)識(shí)符,不需要由某一進(jìn)程事先創(chuàng)建。若flags為IPC_PRIDVATE則不管同鍵值的Unix信號(hào)量集合是否存在系統(tǒng)都建立之,并返回下一個(gè)可用的標(biāo)識(shí)符。

系統(tǒng)調(diào)用semctl在一組信號(hào)量上做各種控制操作,諸如Unix信號(hào)量集合的初始化、刪除和狀態(tài)查詢等。常用的操作及相關(guān)的命令格式如下:

①取消Unix信號(hào)量集合

 

  1. int semctl(sid,count,IPC_RMID,0)   
  2. int sid; /*信號(hào)量集合標(biāo)識(shí)符*/   
  3. int count; /*信號(hào)量集合中元素個(gè)數(shù)*/  

②設(shè)置信號(hào)量集合的初值(初始化)

Unix信號(hào)量集合剛建立時(shí),各信號(hào)量的初值不確定,需要設(shè)定初值。初值的設(shè)定可用SETALL或SETVAL命令。若用SETALL命令,其格式為:

 

  1. int semctl(sid,count,SETALL,arg)   
  2. int sid; /*信號(hào)量集合標(biāo)識(shí)符*/   
  3. int count; /*信號(hào)量集合中元素個(gè)數(shù)*/   
  4. ushort *arg; /*命令參數(shù)*/  

該命令把數(shù)組arg中的前count個(gè)值依次賦給集合中各信號(hào)量,一次可設(shè)定多個(gè)信號(hào)量的初值。
若用SETVAL命令,其格式為:

 

  1. int semctl(sid,semnum,SETVAL,arg)   
  2. int sid; /*信號(hào)量集合標(biāo)識(shí)符*/   
  3. int semnum; /*信號(hào)量元素編號(hào)*/   
  4. int arg; /*命令參數(shù)*/  

該命令將arg的值賦給集合中第semnum個(gè)信號(hào)量,一次僅能設(shè)定一個(gè)信號(hào)量的初值。

③查詢Unix信號(hào)量集合的當(dāng)前值

查詢信號(hào)量集合的當(dāng)前值可用GETALL或GETVAL命令。若用GETALL命令,其格式為:

 

  1. int semctl(sid,count,GETALL,arg)   
  2. int sid; /*信號(hào)量集合標(biāo)識(shí)符*/   
  3. int count; /*信號(hào)量集合中元素個(gè)數(shù)*/   
  4. ushort *arg; /*命令參數(shù)*/  

該命令把信號(hào)量集合中各信號(hào)量的當(dāng)前值返回到數(shù)組arg中。

若用GETVAL命令,其格式為:

 

  1. int semctl(sid,semnum,GETVAL,0)   
  2. int sid; /*信號(hào)量集合標(biāo)識(shí)符*/   
  3. int semnum; /*信號(hào)量元素編號(hào)*/  

該命令把集合中第semnum個(gè)信號(hào)量的當(dāng)前值作為調(diào)用的返回值。

④查詢某個(gè)Unix信號(hào)量的等待進(jìn)程數(shù)

當(dāng)一個(gè)進(jìn)程要執(zhí)行信號(hào)量操作時(shí)若條件不具備則被阻塞,有關(guān)信號(hào)量的等待進(jìn)程數(shù)也相應(yīng)變化。

通過(guò)GETNCNT命令可查詢等待信號(hào)量增值的進(jìn)程數(shù),其格式如下:

 

  1. int semctl(sid,semnum,GETNCNT,0)   
  2. int sid; /*信號(hào)量集合標(biāo)識(shí)符*/   
  3. int semnum; /*信號(hào)量元素編號(hào)*/  

該命令把等待第semnum個(gè)信號(hào)量增值的進(jìn)程數(shù)作為調(diào)用的返回值。

通過(guò)GETZCNT命令可查詢等待信號(hào)量值為0的進(jìn)程數(shù),其格式如下:

 

  1. int semctl(sid,semnum,GETZCNT,0)   
  2. int sid; /*信號(hào)量集合標(biāo)識(shí)符*/   
  3. int semnum; /*信號(hào)量元素編號(hào)*/ 

該命令把等待第semnum個(gè)信號(hào)量值為0的進(jìn)程數(shù)作為調(diào)用的返回值。

關(guān)于Unix信號(hào)量的介紹,我們就到這里了,至于其它的控制命令,因不常用而不再累述。

【編輯推薦】

  1. 講解Unix線程同步
  2. 靈活運(yùn)用Unix 線程知識(shí)
  3. 教你Unix消息隊(duì)列的應(yīng)用
  4. 教你如何創(chuàng)建Unix消息隊(duì)列
  5. 知識(shí)講解Unix 消息隊(duì)列
責(zé)任編輯:小霞
相關(guān)推薦

2010-04-21 16:25:13

Unix信號(hào)量

2010-04-21 16:50:31

Unix信號(hào)量

2010-04-21 15:37:38

Unix信號(hào)量

2010-04-21 17:10:25

Unix信號(hào)量

2013-08-21 14:06:05

iOS隊(duì)列信號(hào)

2021-04-13 09:20:15

鴻蒙HarmonyOS應(yīng)用開發(fā)

2020-11-05 09:59:24

Linux內(nèi)核信號(hào)量

2021-09-07 07:53:42

Semaphore 信號(hào)量源碼

2020-09-25 07:34:40

Linux系統(tǒng)編程信號(hào)量

2009-12-08 12:14:43

2024-10-29 15:23:45

Python線程安全

2017-05-11 14:05:25

Consul分布式信號(hào)量

2021-02-03 20:10:29

Linux信號(hào)量shell

2020-11-10 15:25:26

SemaphoreLinux翻譯

2019-11-19 09:00:38

JavaAND信號(hào)量

2010-03-17 16:36:10

Java信號(hào)量模型

2010-07-15 15:32:10

Perl線程

2010-03-16 17:52:27

Java多線程信號(hào)量

2016-11-23 16:08:24

Python處理器分布式系統(tǒng)

2025-04-16 08:50:00

信號(hào)量隔離線程池隔離并發(fā)控制
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)