📄 semaphore.c
字号:
#include <unistd.h>#include <sys/types.h>#include <sys/sem.h>#include <stdio.h>#include "stdlib.h"int semaphore_wait(int id, int idx){ struct sembuf sem_op; sem_op.sem_num = idx; sem_op.sem_op = -1; sem_op.sem_flg = SEM_UNDO ;//| IPC_NOWAIT; return semop(id, &sem_op, 1) ; } int semaphore_signal(int id, int idx){ struct sembuf sem_op; sem_op.sem_num = idx; sem_op.sem_op = 1; sem_op.sem_flg = SEM_UNDO; if(semop(id, &sem_op, 1) < 0) return -1; return 0;}int semaphore_create(key_t sem_key,int n){ unsigned long sem_id; int ret; sem_id = semget(sem_key, n, IPC_CREAT | 0600); return sem_id;}void semaphore_set_val(int id,int idx,int val){ int ret; ret = semctl(id, idx, SETVAL, val); // 设置互斥信号量初值 if(ret < 0) { return -1; }}void semaphore_destroy(int id){ semctl(id,0,IPC_RMID,0);}void semaphore_state(int id){ printf("SERVER:semaphore:0x%x\n",semctl(id, 0, GETVAL, 0 )); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -