Demo实现
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
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 pGetKey(int id)
{
struct sembuf set;
// 信号量的编号,信号量集里面只有一个,默认就是0
set.sem_num = 0;
// 操作 减少1
set.sem_op = -1;
// 没有锁的执行操作 UNDO为等待让进程中断,NOWAIT为不等待
set.sem_flg &#