https://blog.csdn.net/tennysonsky/article/details/46500417
有名信号量一般用于进程间同步或互斥 。
无名信号量则直接保存在内存中,而有名信号量要求创建一个文件。
1)创建一个有名信号量
所需头文件:
#include <fcntl.h>
#include <sys/stat.h>
#include <semaphore.h>
当有名信号量存在时使用:
sem_t *sem_open(const char *name,int oflag);
当有名信号量不存在时使用:
sem_t *sem_open(const char *name,int oflag,mode_t mode,unsigned int value);
参数:
name:信号量文件名。注意:不能指定路径名。因为有名信号量,默认放在/dev/shm 里
oflag:行为标志 O_CREAT O_RDWR
mode:文件权限(可读 可写 可执行)的设置
value:信号量初始值
返回值:
成功:信号量的地址
失败:SEM_FAILED
2)关闭有名信号量
所需头文件:
#include <semaphore.h>
int sem_close(sem_t *sem)
返回值:
成功:0
失败:-1
3)删除有名信号量文件
所需头文件:
#include <semaphore.h>
int sem_unlink(const char *name);
功能:
删除有名信号量的文件。
参数:
name:有名信号量文件名
返回值:
成功:0
失败:-1