信号量函数的封装
来源:互联网 发布:c语言 if else 嵌套 编辑:程序博客网 时间:2024/05/12 17:13
信号量函数的封装:
sem.h
#ifndef __SEM_H#define __SEM_H#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <assert.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>int semid;union semun{int val;};void sem_get();//创建或获取信号量,如果是初次则创建void sem_p();//p操作,等待void sem_v();//v操作,发送信号void sem_del();//删除信号量#endif
sem.c
#include "sem.h"#include <stdio.h>#include <stdlib.h>#include <assert.h>void sem_get(){semid = semget((key_t)1234, 1, 0664);//直接获取信号量,if(semid == -1)//如果获取失败,则创建信号量{semid = semget((key_t)1234, 1, 0664 | IPC_CREAT);assert(semid != -1);union semun v;v.val = 0;if(-1 == semctl(semid, 0, SETVAL, v)){perror("error");exit(0);}}}void sem_p(){struct sembuf buff;buff.sem_num = 0;buff.sem_op = -1;buff.sem_flg = SEM_UNDO;if(-1 == semop(semid, &buff, 1)){perror("p error");exit(0);}}void sem_v(){struct sembuf buff;buff.sem_num = 0;buff.sem_op = 1;buff.sem_flg = SEM_UNDO;if(-1 == semop(semid, &buff, 1)){perror("p error");exit(0);}}void sem_del(){if(-1 == semctl(semid, 0, IPC_RMID)){perror("del error");exit(0);}}
阅读全文
0 0
- 信号量函数的封装
- 信号量有关函数的封装
- linux网络编程之System V 信号量(一):封装一个信号量集操作函数的工具
- linux网络编程之System V 信号量(一):封装一个信号量集操作函数的工具
- 信号量的实现函数
- 信号量函数的实现
- 信号量 sem_timedwait 函数的使用
- 信号量封装类(windows)
- 信号量封装类(Linux)
- 将Linux的信号量sem_t封装成事件对象
- UCOSII信号量的三个主要的函数
- 函数的封装解释
- 封装的VC函数
- cookies的函数封装
- AJAX函数的封装
- 函数的封装
- 常用函数的封装
- outputdebugstring函数的封装
- 11.2 cookie
- 6.mongo命令提示符帮助
- c语言常用关键字总结
- Android程序员学WEB前端(13)-JavaScript(4)-Bom-Sublime
- Mini猫耳朵耳机和猫耳朵耳机哪款耳机更好
- 信号量函数的封装
- bootstrap datepicker手册
- JQuery对象和DOM对象
- Java 日期
- python: ValueError: math domain error
- C面试题(2017.10.22)
- Eclipse设置注释模板
- 七-1 管理本地存储,Cookies和资源 检查和管理Storage, Databases 和 Caches
- ilike---不区分大小写的模糊查询