linux c 移除信号量,Linux c 信号量

信号量(通过进程通信实现进程间的同步)

信号量(semaphore)信号灯

信号量是共享内存整数数组.根据需要定义指定的数组长度

信号量就是根据数组中的值,决定阻塞还是解除阻塞

编程模型:

1.       创建或者得到信号量 semget

2.       初始化信号量中指定下标的值 semctl

3.       根据信号量阻塞或者解除阻塞 semop

4.       删除信号量 semctl

案例:

A:                                 B:

创建信号量                          得到信号量

初始化信号量                        解除阻塞

根据信号量阻塞

删除信号量

int semget(key_t key,

int nums,//信号量数组个数

int flags);//信号量的创建标记

//创建IPC_CREAT|IPC_EXCL|0666

//打开0

返回:  -1:失败

>=0:成功返回信号量的ID

int semctl(int semid,

intnums,//对IPC_RMID无意义

intcmd,//SETVAL(信号量值) IPC_RMID

...);//对IPC_RMID无意义

参数:semid:信号集的标识符,即是信号表的索引。

semnum:信号集的索引,用来存取信号集内的某个信号。

cmd:需要执行的命令,有效值有 需要使用联合体

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值