(1)创建信号灯集 int semget(key_t key, int nsems, int semflg); 参数: @key IPC_PRIVATE , ftok() @nsems 信号灯集中信号灯的个数 @semflg IPC_CREAT | 0666,IPC_CREAT | IPC_EXCL 返回值: 成功返回ID,失败返回-1
(2)初始化信号灯集中信号灯的值
int semctl(int semid, int semnum, int cmd, ...); 参数: @semid 信号灯集的ID @semnum 信号灯的编号[编号从0开始] @cmd SETVAL[设置信号灯的值] ,GETVAL(获取信号灯的值),IPC_RMID[删除信号灯集] 返回值: 成功返回0,失败返回-1
思考:将信号灯集中的1号信号灯初始化为1?
union semun { int val; /* Value for SETVAL */ struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */ unsigned short *array; /* Array for GETALL, SETALL */ struct seminfo *__buf; /* Buffer for IPC_INFO (Linux-specific) */ };
void init_sem_value(int sem_id,int sem_num,int value) { union semun sem_val;