頭檔案
#include<semaphore.h>
函式原型
int sem_init(sem_t *sem, int pshared, unsigned int value);
說明
如果 pshared 是非零值,那么信號量將在進程之間共享,並且應該定位共享記憶體區域(見 shm_open(3)、mmap(2) 和 shmget(2))。因為通過 fork(2) 創建的孩子繼承其父親的記憶體映射,因此它也可以見到這個信號量。所有可以訪問共享記憶體區域的進程都可以用 sem_post(3)、sem_wait(3) 等等操作信號量。初始化一個已經初始的信號量其結果未定義。
參數
sem :指向信號量對象
pshared : 指明信號量的類型。不為0時此信號量在進程間共享,否則只能為當前進程的所有執行緒共享。
value : 指定信號量值的大小
返回值
sem_init() 成功時返回 0;錯誤時,返回 -1,並把 errno 設定為合適的值。
錯誤
EINVAL
value 超過 SEM_VALUE_MAX。
ENOSYS
pshared 非零,但系統還沒有支持進程共享的信號量。