sem_open、sem_close、sem_unlink

2023-05-16

UNP2 P180

sem_t  *sem_open(const char *name, int oflag,..,/*mode_t mode,unsigned int value*/) :打开有名信号量

1.当打开一个一定存在的有名信号量时,ofalg设置为0.

int sem_close(sem_t *sem):关闭有名信号量

2.一个进程终止时,内核对其上仍打开的所有有名信号量自动执行关闭操作。不论进程是自愿还是非自愿终止。

3.关闭一个信号量并没有将他从系统中删除。POSIX 有名信号量是随内核持续的:即使当前没有进程打开着某个信号量,他的值仍保持。

int sem_unlink(const char *name):从系统中删除有名信号量

4.每个信号量有一个引用计数器记录打开的次数,当引用计数大于0时,name 就能从文件系统中删除,然而其信号量的析构(不同于将他的名字从文件系统中删除)却要等到最后一个sem_close发生时为止.

sem_t *sem;
	int val;
	if((sem=sem_open(SEM_NAME,OFLAG,MODE,SEM_VALUE))==SEM_FAILED)
	{
		perror("sem_open failed");
		exit(EXIT_FAILURE);
	}

	if(-1==sem_close(sem))
	{
		perror("sem_close failed");
		exit(EXIT_FAILURE);
	}
	if(-1==sem_getvalue(sem,&val))  //sem_close() 后sem_getvalue() 错误:segmentation fault
	{
		perror("sem_getvalue failed");
		exit(EXIT_FAILURE);
	}
	sem_t *sem;
	int val;
	if((sem=sem_open(SEM_NAME,OFLAG,MODE,SEM_VALUE))==SEM_FAILED)
	{
		perror("sem_open failed");
		exit(EXIT_FAILURE);
	}
	if(-1==sem_unlink(SEM_NAME))
		{
		perror("sem_unlink failed");
		exit(EXIT_FAILURE);
	}
	
	if(-1==sem_getvalue(sem,&val)) //sem_unlink() 后sem_getvalue()可以获取到信号量的值(此时,name删除,信号量并未析构(上述第4))
	{
		perror("sem_getvalue failed");
		exit(EXIT_FAILURE);
	}
	if(-1==sem_close(sem))
	{
		perror("sem_close failed");
		exit(EXIT_FAILURE);
	}





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sem_open、sem_close、sem_unlink 的相关文章

随机推荐

  • 【敬伟ps教程】套索、魔棒工具、快速选择工具、选区的编辑和调整

    文章目录 套索工具自由套索多边形套索磁性套索工具 魔棒工具快速选择工具选区的编辑和调整 套索工具 自由套索 套索工具的用法 xff0c 点击鼠标左键拖动鼠标建立选区 当选区没闭合时 xff0c 松开鼠标会自动闭合选区 套索工具灵活快速但不够
  • Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

    项目是 vite 43 vue 43 ts 运行 npm run dev可以正常运行 xff0c 运行 npm run build 报错 解决办法 xff1a 1 先打开cmd全局命令窗口 xff0c 输入 npm install g in
  • 安卓手机投屏到win10电脑

    PC端操作 手机端操作 xff08 Mi6为例 xff09 pc端弹出提示 xff0c 选择是
  • 用Windows自带画图软件吸取色值

    1 打开画图windows自带画图软件 2 用qq截图要吸取颜色的图片 xff0c ctrl 43 v粘贴到画图软件中 3 点击取色器 xff0c 吸取颜色 xff0c 这是会看到吸取成功的颜色 4 打开编辑颜色 5 这样就得到了RGB颜色
  • 打开浏览器默认是360导航解决办法

    Chrome Chrome的设置中已经设置了百度为启动页 但是打开Chrome显示的还是360 解决办法很简单就是把桌面的快捷方式删除 xff0c 然后在安装目录重新生成快捷方式到桌面即可 Microsoft Edge 这个360修改的就更
  • 打开项目报错Error:Could not get unknown property 'mave' for project ':app' of type org.gradle.api.Project.

    今天打开项目 xff0c 报错如下 xff1a 打开gradle properties xff0c 发现最后的MAVEN URL地址错乱 xff0c 改完就可以了
  • Eclipse自带的抓包工具

    打开Eclipse window show view other 现在访问之前写的项目 http localhost 8888 android jsp flight index jsp 查看Eclipse
  • Fiddler抓取手机端APP接口数据(包括https)

    下载安装Fiddler https pan baidu com s 12zAt0r8lcHTszekOOcqeLg 环境要求 PC机和手机连接在同一网络下 设置 1 记录pc端地址 2 如果不显示这个工具栏 xff0c 可以设置View S
  • 【Git】Git撤销add操作

    Git add错了文件怎么办 xff1f 可以查看以下两篇 https git scm com book zh v1 Git 基础 记录每次更新到仓库 https git scm com book zh v1 Git 基础 撤消操作 我们来
  • Cygwin安装教程

    简介 cygwin是一个在windows平台上运行的unix模拟环境 xff0c 是cygnus solutions公司开发的自由软件 Cygwin就是一个windows软件 xff0c 该软件就是在windows上仿真linux操作系统
  • 学习Kalibr工具--Camera标定过程

    这里介绍用kalibr工具对相机进行单目和双目的标定 xff1b 在kalibr中不仅提供了IMU与camera的联合标定工具 xff0c 也包含了camera的标定工具箱 xff1b 准备 安装好kalibr之后 xff0c 开始准备标定
  • 常用NMEA0183的报文解析

    NMEA0183报文包括GPGGA GPRMC GPVTG等报文 xff0c 本文主要介绍NMEA0183语句报文的格式以及解析 xff0c 方便有关位置信息编程或者有关位置获取的其他方面 1 GPGGA GPGGA消息包含详细的GNSS定
  • 03 - 雷达的基本组成

    目录 1 雷达发射机 2 雷达天线 3 雷达接收机 4 雷达信号处理机 5 雷达终端设备 以典型单基地脉冲雷达为例来说明雷达的基本组成及其作用 如图1 5所示 xff0c 它主要由天线 发射机 接收机 信号处理机和终端设备等组成 1 雷达发
  • 相机模型详解

    相机模型 数码相机图像拍摄的过程实际上是一个光学成像的过程 相机的成像过程涉及到四个坐标系 xff1a 世界坐标系 相机坐标系 图像坐标系 像素坐标系 以及这四个坐标系的转换 理想透视模型 针孔成像模型 相机模型是光学成像模型的简化 xff
  • Socket通讯实验总结

    网络编程的第一个实验入门比较难 因为要理解透彻套接字的工作原理 xff0c 服务器与客户端通讯的过程 不过经过几天的仔细研究 xff0c 实验还是完成了 以下对几个实验的知识点总结一下 xff1a 1 Socket和线程 在实验中一定要弄清
  • Linux网络编程 - 基于UDP的服务器端/客户端

    一 理解UDP 1 0 UDP协议简介 UDP User Datagram Protocol xff0c 用户数据报协议 RFC 768 UDP协议的数据传输单元叫 UDP用户数据报 xff0c 而TCP协议的数据传输单元叫 TCP报文段
  • VS中MFC连接MySQL的方法

    MFC 连接 MySQL 的方法 xff1a 首先建立一个 MFC 项目 下面进行设置 xff1a xff08 1 xff09 项目 gt 属性 gt 配置属性 gt C C 43 43 gt 附加包含目录 xff1a 在附加包含目录中添加
  • MFC 窗口Dialog 添加背景图片

    xff08 1 xff09 添加要设置为背景的图片资源 xff08 格式为bmp xff09 将图片 xff08 命名为homepage bmp xff09 放到工程下的资源文件夹中 xff08 res xff09 xff08 2 xff0
  • VirtualBox 在CentOS下安装增强功能及错误解决

    安装步骤如下 xff1a 1 执行安装增强功能 xff1a 之后会出现 Building the main Guest Addtional module Failed 的错误 xff0c 如下图 xff0c 安装失败 xff01 xff01
  • sem_open、sem_close、sem_unlink

    UNP2 P180 sem t sem open const char name int oflag mode t mode unsigned int value 打开有名信号量 1 当打开一个一定存在的有名信号量时 xff0c ofalg