欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

linux刪除信號(hào)量命令,linux修改信號(hào)量

Linux信號(hào)量

信號(hào)量是包含一個(gè)非負(fù)整數(shù)型的變量,并且?guī)в袃蓚€(gè)原子操作wait和signal。Wait還可以被稱為down、P或lock,signal還可以被稱為up、V、unlock或post。在UNIX的API中(POSIX標(biāo)準(zhǔn))用的是wait和post。

創(chuàng)新互聯(lián)建站是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),網(wǎng)站空間、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,成都西信服務(wù)器托管,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國(guó)大陸、港澳臺(tái)以及歐美等多個(gè)國(guó)家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。

對(duì)于wait操作,如果信號(hào)量的非負(fù)整形變量S大于0,wait就將其減1,如果S等于0,wait就將調(diào)用線程阻塞;對(duì)于post操作,如果有線程在信號(hào)量上阻塞(此時(shí)S等于0),post就會(huì)解除對(duì)某個(gè)等待線程的阻塞,使其從wait中返回,如果沒有線程阻塞在信號(hào)量上,post就將S加1.

由此可見,S可以被理解為一種資源的數(shù)量,信號(hào)量即是通過控制這種資源的分配來(lái)實(shí)現(xiàn)互斥和同步的。如果把S設(shè)為1,那么信號(hào)量即可使多線程并發(fā)運(yùn)行。另外,信號(hào)量不僅允許使用者申請(qǐng)和釋放資源,而且還允許使用者創(chuàng)造資源,這就賦予了信號(hào)量實(shí)現(xiàn)同步的功能。可見信號(hào)量的功能要比互斥量豐富許多。

POSIX信號(hào)量是一個(gè)sem_t類型的變量,但POSIX有兩種信號(hào)量的實(shí)現(xiàn)機(jī)制: 無(wú)名信號(hào)量 和 命名信號(hào)量 。無(wú)名信號(hào)量只可以在共享內(nèi)存的情況下,比如實(shí)現(xiàn)進(jìn)程中各個(gè)線程之間的互斥和同步,因此無(wú)名信號(hào)量也被稱作基于內(nèi)存的信號(hào)量;命名信號(hào)量通常用于不共享內(nèi)存的情況下,比如進(jìn)程間通信。

同時(shí),在創(chuàng)建信號(hào)量時(shí),根據(jù)信號(hào)量取值的不同,POSIX信號(hào)量還可以分為:

下面是POSIX信號(hào)量函數(shù)接口:

信號(hào)量的函數(shù)都以sem_開頭,線程中使用的基本信號(hào)函數(shù)有4個(gè),他們都聲明在頭文件semaphore.h中,該頭文件定義了用于信號(hào)量操作的sem_t類型:

【sem_init函數(shù)】:

該函數(shù)用于創(chuàng)建信號(hào)量,原型如下:

該函數(shù)初始化由sem指向的信號(hào)對(duì)象,設(shè)置它的共享選項(xiàng),并給它一個(gè)初始的整數(shù)值。pshared控制信號(hào)量的類型,如果其值為0,就表示信號(hào)量是當(dāng)前進(jìn)程的局部信號(hào)量,否則信號(hào)量就可以在多個(gè)進(jìn)程間共享,value為sem的初始值。

該函數(shù)調(diào)用成功返回0,失敗返回-1。

【sem_destroy函數(shù)】:

該函數(shù)用于對(duì)用完的信號(hào)量進(jìn)行清理,其原型如下:

成功返回0,失敗返回-1。

【sem_wait函數(shù)】:

該函數(shù)用于以原子操作的方式將信號(hào)量的值減1。原子操作就是,如果兩個(gè)線程企圖同時(shí)給一個(gè)信號(hào)量加1或減1,它們之間不會(huì)互相干擾。其原型如下:

sem指向的對(duì)象是sem_init調(diào)用初始化的信號(hào)量。調(diào)用成功返回0,失敗返回-1。

sem_trywait()則是sem_wait()的非阻塞版本,當(dāng)條件不滿足時(shí)(信號(hào)量為0時(shí)),該函數(shù)直接返回EAGAIN錯(cuò)誤而不會(huì)阻塞等待。

sem_timedwait()功能與sem_wait()類似,只是在指定的abs_timeout時(shí)間內(nèi)等待,超過時(shí)間則直接返回ETIMEDOUT錯(cuò)誤。

【sem_post函數(shù)】:

該函數(shù)用于以原子操作的方式將信號(hào)量的值加1,其原型如下:

與sem_wait一樣,sem指向的對(duì)象是由sem_init調(diào)用初始化的信號(hào)量。調(diào)用成功時(shí)返回0,失敗返回-1。

【sem_getvalue函數(shù)】:

該函數(shù)返回當(dāng)前信號(hào)量的值,通過restrict輸出參數(shù)返回。如果當(dāng)前信號(hào)量已經(jīng)上鎖(即同步對(duì)象不可用),那么返回值為0,或?yàn)樨?fù)數(shù),其絕對(duì)值就是等待該信號(hào)量解鎖的線程數(shù)。

【實(shí)例1】:

【實(shí)例2】:

之所以稱為命名信號(hào)量,是因?yàn)樗幸粋€(gè)名字、一個(gè)用戶ID、一個(gè)組ID和權(quán)限。這些是提供給不共享內(nèi)存的那些進(jìn)程使用命名信號(hào)量的接口。命名信號(hào)量的名字是一個(gè)遵守路徑名構(gòu)造規(guī)則的字符串。

【sem_open函數(shù)】:

該函數(shù)用于創(chuàng)建或打開一個(gè)命名信號(hào)量,其原型如下:

參數(shù)name是一個(gè)標(biāo)識(shí)信號(hào)量的字符串。參數(shù)oflag用來(lái)確定是創(chuàng)建信號(hào)量還是連接已有的信號(hào)量。

oflag的參數(shù)可以為0,O_CREAT或O_EXCL:如果為0,表示打開一個(gè)已存在的信號(hào)量;如果為O_CREAT,表示如果信號(hào)量不存在就創(chuàng)建一個(gè)信號(hào)量,如果存在則打開被返回,此時(shí)mode和value都需要指定;如果為O_CREAT|O_EXCL,表示如果信號(hào)量存在則返回錯(cuò)誤。

mode參數(shù)用于創(chuàng)建信號(hào)量時(shí)指定信號(hào)量的權(quán)限位,和open函數(shù)一樣,包括:S_IRUSR、S_IWUSR、S_IRGRP、S_IWGRP、S_IROTH、S_IWOTH。

value表示創(chuàng)建信號(hào)量時(shí),信號(hào)量的初始值。

【sem_close函數(shù)】:

該函數(shù)用于關(guān)閉命名信號(hào)量:

單個(gè)程序可以用sem_close函數(shù)關(guān)閉命名信號(hào)量,但是這樣做并不能將信號(hào)量從系統(tǒng)中刪除,因?yàn)槊盘?hào)量在單個(gè)程序執(zhí)行之外是具有持久性的。當(dāng)進(jìn)程調(diào)用_exit、exit、exec或從main返回時(shí),進(jìn)程打開的命名信號(hào)量同樣會(huì)被關(guān)閉。

【sem_unlink函數(shù)】:

sem_unlink函數(shù)用于在所有進(jìn)程關(guān)閉了命名信號(hào)量之后,將信號(hào)量從系統(tǒng)中刪除:

【信號(hào)量操作函數(shù)】:

與無(wú)名信號(hào)量一樣,操作信號(hào)量的函數(shù)如下:

命名信號(hào)量是隨內(nèi)核持續(xù)的。當(dāng)命名信號(hào)量創(chuàng)建后,即使當(dāng)前沒有進(jìn)程打開某個(gè)信號(hào)量,它的值依然保持,直到內(nèi)核重新自舉或調(diào)用sem_unlink()刪除該信號(hào)量。

無(wú)名信號(hào)量的持續(xù)性要根據(jù)信號(hào)量在內(nèi)存中的位置確定:

很多時(shí)候信號(hào)量、互斥量和條件變量都可以在某種應(yīng)用中使用,那這三者的差異有哪些呢?下面列出了這三者之間的差異:

關(guān)于linux的刪除命令

在Linux下刪除文件用rm命令,具體用法如下:

一、rm [選項(xiàng)] 文件。選項(xiàng)說明:

1、-f-force忽略不存在的文件,強(qiáng)制刪除,無(wú)任何提示。

2、-i--interactive  進(jìn)行交互式地刪除。

3、-r | -R--recursive ? 遞歸式地刪除列出的目錄下的所有目錄和文件。

4、-v ?? --verbose詳細(xì)顯示進(jìn)行的步驟。

拓展資料

Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個(gè)基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。

linux進(jìn)程間信號(hào)量的分配釋放

和用于分配、釋放共享內(nèi)存的 shmget 和 shmctl 類似,系統(tǒng)調(diào)用 semget 和 semctl 負(fù)責(zé)分配、釋放信號(hào)量。調(diào)用 semget 函數(shù)并傳遞如下參數(shù):一個(gè)用于標(biāo)識(shí)信號(hào)量組的鍵值,該組中包含的信號(hào)量數(shù)量和與 shmget 所需的相同的權(quán)限位標(biāo)識(shí)。該函數(shù)返回的是信號(hào)量組的標(biāo)識(shí)符。您可以通過指定正確的鍵值來(lái)獲取一個(gè)已經(jīng)存在的信號(hào)量的標(biāo)識(shí)符;這種情況下,傳遞的信號(hào)量組的容量可以為0。

信號(hào)量會(huì)一直保存在系統(tǒng)中,甚至所有使用它們的進(jìn)程都退出后也不會(huì)自動(dòng)被銷毀。最后一個(gè)使用信號(hào)量的進(jìn)程必須明確地刪除所使用的信號(hào)量組,來(lái)確保系統(tǒng)中不會(huì)有太多閑置的信號(hào)量組,從而導(dǎo)致無(wú)法創(chuàng)建新的信號(hào)量組。可以通過調(diào)用semctl來(lái)刪除信號(hào)量組。調(diào)用時(shí)的四個(gè)參數(shù)分別為信號(hào)量組的標(biāo)識(shí)符,操作的信號(hào)量在組中的編號(hào)、常量IPC_RMID 和一個(gè) union semun 類型的任意值(被忽略)。調(diào)用進(jìn)程的有效用戶 id 必須與分配這個(gè)信號(hào)量組的用戶 id 相同(或者調(diào)用進(jìn)程為 root 權(quán)限亦可)。與共享內(nèi)存不同,刪除一個(gè)信號(hào)量組會(huì)導(dǎo)致 Linux 立即釋放資源。

代碼 5.2 展示了用于分配和釋放一個(gè)二元信號(hào)量的函數(shù)。

代碼 5.2 (sem_all_deall.c)分配和釋放二元信號(hào)量

#include sys/ipc.h

#include sys/sem.h

#include sys/types.h /* 我們必須自己定義 semun 聯(lián)合類型。 */

union semun { int val; struct semid_ds *buf; unsigned short int *array; struct seminfo *__buf; };

/* 獲取一個(gè)二元信號(hào)量的標(biāo)識(shí)符。如果需要?jiǎng)t創(chuàng)建這個(gè)信號(hào)量 */

int binary_semaphore_allocation (key_t key, int sem_flags)

{

return semget (key, 1, sem_flags);

} /* 釋放二元信號(hào)量。所有用戶必須已經(jīng)結(jié)束使用這個(gè)信號(hào)量。如果失敗,返回 -1 */

int binary_semaphore_deallocate (int semid)

{

union semun ignored_argument; return semctl (semid, 1, IPC_RMID, ignored_argument);

}

網(wǎng)站欄目:linux刪除信號(hào)量命令,linux修改信號(hào)量
轉(zhuǎn)載來(lái)源:http://chinadenli.net/article29/dsshpch.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣網(wǎng)站排名網(wǎng)站策劃靜態(tài)網(wǎng)站網(wǎng)站改版電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)