linux_c 开发(5-6)进程间通讯_信号量
来源:互联网 发布:怎么复制自己淘宝链接 编辑:程序博客网 时间:2024/06/13 20:50
进程间通信_信号量
信号量(有名:信号灯)与其他进程间通信方式不大相同,主要用途是**保护临界资源**。进程可以根据它判断是否能够访问某些共享资源。除了用于访问控制外,还可以用于**进程同步**。
分类
二值信号灯:信号灯的取值只能取0或者1,类似于互斥所。但两者有不同:信号灯强调共享资源,只要共享资源可用,其他进程同样可以修改信号灯的值;互斥所更加强调进程,占用资源的进程使用完资源后,必须由进程本身来解锁。
**计数信号灯:** 信号灯的值可以取任意非负值。
**创建/打开**
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/sem.h>
int semget(key_t key,int nests,int semflg)
**key:**键值,由ftok获得。
**nsems:**指定打开或者新创建的**信号灯集**中将包含含信号灯的数目。
**semflg:**标志,同消息队列。
**操作**
int semop(int semid,struct sembuf *sops,unsigned nsops)
**功能:**对信号量进行控制。
**semid:**信号量集的ID。
**sops:**是一个操作数组,表明要进行什么操作。
**nsops:**sops所指向的数组的元素个数。
**操作**
struct sembuf { unsigned short em_num; short sem_op; short sem_flg; }
sem_flg:信号操作标志,可能有两种选择:
IPC_NOWAIT:对信号操作不能满足时,semiop()不会阻塞,并立即返回,同时设定错误信息。
IPC_UNDO:程序结束时释放信号量,这样做的目地在于避免程序在异常情况下结束时未将锁定的资源解锁,造成该资源永远锁定。
MarkDown编辑器服务器有问题,写的东西发不上去。
- linux_c 开发(5-6)进程间通讯_信号量
- linux_c开发(5-1)进程间通讯_进程间通讯概念
- linux_c开发(5-2)进程间通讯_管道通讯
- linux_c开发(5-3)进程间通讯_信号通讯
- linux_c开发(5-4)进程间通讯_共享内存通讯
- linux_c 开发(5-5)进程间通讯_消息队列
- 进程间的通讯方式_信号量
- 进程间通讯:信号量
- 进程间通讯--信号量
- linux_c 开发(6-1)多线程程序设计_线程基础
- linux_c 网络开发日记(4)多进程程序设计_进程控制原理
- 进程间通讯之信号量(实例)
- 进程间通讯---信号量练习(二)
- 进程间通讯(二)信号量
- linux 进程间通讯--信号量
- linux-进程间通讯(信号量,共享内存)
- 进程间通讯 (3)-信号量相关函数
- 进程间通讯——信号量(一)
- 字符串匹配的KMP算法
- 算法题:n个括号的合法全排列
- C/C++内存分配的堆和栈
- java--常量池详解之一道比较蛋疼的面试题
- 【80X86汇编语言学习】【字符串处理】字符串操作指令REPNZ/REPNE
- linux_c 开发(5-6)进程间通讯_信号量
- HDOJ 5327 Olympiad 【数字分解】
- 中断解析
- VS2010下安装boost库
- 【暑假测试3】A CodeForces 560A Currency System in Geraldion
- Excel中试用几个日期函数
- 【线段树I:点修改+区间查询】hdu 1394 Minimum Inversion Number
- 关于java ee 7 精粹
- Linux宿主机与目标机通信之minicom安装配置