int semget(key_t key, int nserms, int semflg);
nsems:信号灯集中包含的信号灯数目
semflg:IPC_CREAT|0666|IPC_EXCL
返回:信号灯集ID,出错返回-1
int semop(int semid, struct sembuf *sops, unsigned nsops);
semid:信号灯集的id
sops:具体操作,说明如下:
struct sembuf{
unsigned short sem_num;//要操作的信号灯编号
short sem_op;//操作号, -1为P操作,1为V操作
short sem_flg;//SEM_UNDO:在意外中断,系统自动取消信号灯操作
}
nsops:需要操作的信号灯编号
int semctl(int semid, int semnum, int cmd, ... /* union semun * */)
semnum:要操作的信号编号
cmd:操作指令:SETVAL设置值,在union semnu中保存,
IPC_RMID,删除信号灯,不需要最后一个参数
union semnu 这个共用体需要自己定义:如下
union semun{
int val;//用这个值保存要设置的值
struct semid_ds *buf;
unsigened short *array;
struct seminfo *__buf;
};
阅读(1623) | 评论(0) | 转发(0) |