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:需要执行的命令,有效值有 需要使用联合体

你可能感兴趣的:(linux,c,移除信号量)