分类: LINUX
2013-04-19 20:04:28
原文地址:IPC- Sem信号量编程 作者:lixuewei97
1. 概念
信号量:代表资源数;
>0 代表可供并发进程使用的资源实体数;
=0 代表暂时无可用资源
<0 代表等待使用资源的进程数;
初始设置资源数=1,用于互斥的信号量;
可以通过P、V语操作而改变;
2. 创建信号量
|
成功返回信号ID标识,否则失败返回-1.
参数 |
说明 |
key |
创建/打开信号量标识key值,由ftok产生,可以直接给常量 |
nsems |
信号ID标识的一组大小。即设置几个信号量。通常为1个 |
semflg |
创建/打开方式IPC_CREAT、IPC_EXCL, |
3 信号量控制
|
参数 |
说明 |
semid |
已创建的信号ID |
semnum |
需要控制的信号组某个信号值的下标 |
cmd |
具体控制操作: IPC_RMID 删除信号量ID信息 IPC_EXCL 只有在信号量集不存在时创建 IPC_SET 设置信号量的许可权 SETVAL 设置指定信号量的元素的值为 agc.val GETVAL 获得一个指定信号量的值 GETPID 获得最后操纵此元素的最后进程ID GETNCNT 获得等待元素变为1的进程数 |
arg |
操作值的union结构 |
|
4. 信号量操作
|
成功返回0,否则失败返回-1.
参数 |
说明 |
semid |
已创建的信号ID |
sops |
具体的操作结构 |
nsops |
信号组大小 |
|
5 例子:
sem.c
|