C函數篇(sem_init函數)

頭文件

#include<semaphore.h>函數

函數原型

int sem_init(sem_t *sem, int pshared, unsigned int value);post

說明

sem_init() 初始化一個定位在 sem 的匿名信號量。value 參數指定 信號量的初始值。 pshared 參數指明 信號量是由進程內 線程共享,仍是由進程之間共享。若是 pshared 的值爲 0,那麼 信號量將被進程內的 線程共享,而且應該放置在這個進程的全部線程均可見的地址上(如 全局變量,或者堆上動態分配的變量)。
若是 pshared 是非零值,那麼 信號量將在進程之間共享,而且應該定位 共享內存區域(見 shm_open(3)、mmap(2) 和 shmget(2))。(由於經過 fork(2) 建立的孩子繼承其父親的內存映射,所以它也能夠見到這個 信號量。全部能夠訪問 共享內存區域的進程均可以用 sem_post(3)、 sem_wait(3) 等等操做 信號量。初始化一個已經初始的 信號量其結果未定義。
 

回值

sem_init() 成功時返回 0;錯誤時,返回 -1,並把 errno 設置爲合適的值。
 

EINVAL
value 超過 SEM_VALUE_MAX。
ENOSYS
pshared 非零,但系統尚未支持進程共享的 信號量
相關文章
相關標籤/搜索