码迷,mamicode.com
首页 > 系统相关 > 详细

linux应用开发-信号量互斥编程

时间:2015-05-07 08:52:59      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:linux   通信   

linux应用开发-信号量互斥编程
一 相应的函数


1 创建/打开信号量集合


函数名 semget


函数原形 int semget(key_t key, int nsems, int semflg)


函数功能
获取信号量集合的标识符
当key所指的信号量不存在的时候,且semflg里包含了IPC_CREAT,就会创建一个信号量的集合


所属头文件
<sys/types.h> <sys/ipc.h> <sys/sem.h>


返回值
成功返回信号量的标识符
失败返回-1


参数说明
Key为键值,即内核数字与项目ID结合
nsems为产生信号量的个数
semflg标志,可以去IPC_CREAT


 




2 操作信号量


函数名 semop


函数原形 int semop(int semid, struct sembuf *sops, unsigned nsops)


函数功能
操作信号量集合里面的信号量


所属头文件
<sys/types.h><sys/ipc.h><sys/sem.h>


返回值
成功返回0
失败返回-1


参数说明
semid:要操作的信号量的标识符
sops:要操作多少个信号量
nsops:对信号量执行什么样的操作


3 产生键值
键值是文件在内核产生的数值与项目id结合的数
key = key_t ftok(char *fname, int id)


4 控制信号量
semctl(int semid, int semnum, int cmd...)


semid信号量标识符


semnum信号量编号


cmd相应的指令入GETVAL,SETVAL等等


技术分享
上图为A进程,下图为B进程,两者利用信号量进行通信
技术分享

linux应用开发-信号量互斥编程

标签:linux   通信   

原文地址:http://blog.csdn.net/qq_22075977/article/details/45542387

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!