sem_open

sem_open,計算機用語。意思是創建並初始化有名信號量或打開一個已存在的有名信號量計算機用語

基本介紹

  • 外文名:sem_open
  • 屬於:計算機用語
程式內容,經典實例,

程式內容

函式說明:創建並初始化有名信號量。
頭檔案:#include <semaphore.h>
函式原型:sem_t *sem_open(const char *name,int oflag,mode_t mode,unsigned int value);
參數:
name 信號燈的外部名字
oflag 選擇創建或打開一個現有的信號燈
mode 許可權位
value 信號燈初始值
返回值:
成功時返回指向信號燈的指針,出錯時為SEM_FAILED
oflag參數可以是0、O_CREAT(創建一個信號量)或O_CREAT|O_EXCL(如果沒有指定的信號量就創建),如果指定了O_CREAT,那么第三個和第四個參數是需要的;其中mode參數指定許可權位,value參數指定信號量的初始值,通常用來指定共享資源的書面。該初始不能超過SEM_VALUE_MAX,這個常值必須低於為32767。二值信號量的初始值通常為1,計數信號量的初始值則往往大於1。
如果指定了O_CREAT(而沒有指定O_EXCL),那么只有所需的信號量尚未存在時才初始化它。所需信號量已存在條件下指定O_CREAT不是一個錯誤。該標誌的意思僅僅是“如果所需信號量尚未存在,那就創建並初始化它”。但是所需信號量等已存在條件下指定O_CREAT|O_EXCL卻是一個錯誤。
sem_open返回指向sem_t信號量的指針,該結構里記錄著當前共享資源的數目。

經典實例


#include <semaphore.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
int main(int argc,char **argv)
{
sem_t *sem;
if(argc!=2)
{
printf(“please input a file name!\n”);
exit(1);
}
sem=sem_open(argv[1],O_CREAT,0644,1);
exit(0);
}

相關詞條

熱門詞條

聯絡我們