Chinaunix首页 | 论坛 | 博客
  • 博客访问: 132314
  • 博文数量: 44
  • 博客积分: 956
  • 博客等级: 准尉
  • 技术积分: 521
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-18 12:45
文章分类
文章存档

2012年(11)

2011年(33)

分类: LINUX

2012-01-09 15:48:38

int semget(key_t key, int nserms, int semflg);
nsems:信号灯集中包含的信号灯数目
semflg:IPC_CREAT|0666|IPC_EXCL
返回:信号灯集ID,出错返回-1

int semop(int semid, struct sembuf *sops, unsigned nsops);
semid:信号灯集的id
sops:具体操作,说明如下:
struct sembuf{
unsigned short sem_num;//要操作的信号灯编号
short   sem_op;//操作号, -1为P操作,1为V操作
short   sem_flg;//SEM_UNDO:在意外中断,系统自动取消信号灯操作
}
nsops:需要操作的信号灯编号

int semctl(int semid, int semnum, int cmd, ... /* union semun * */)
semnum:要操作的信号编号
cmd:操作指令:SETVAL设置值,在union semnu中保存,
IPC_RMID,删除信号灯,不需要最后一个参数

union semnu 这个共用体需要自己定义:如下
union semun{
int val;//用这个值保存要设置的值
struct semid_ds *buf;
unsigened short *array;
struct seminfo *__buf;
};
阅读(1623) | 评论(0) | 转发(0) |
0

上一篇:进程间通信(22)

下一篇:网络编程(24)

给主人留下些什么吧!~~