c 有名管道FIFO

我理解,fifo 就是一文件。其实,一般文件也可以在进程间传递信息,只要控制好进程间的读写互斥就行了

进程一:特别要注意mkfifo第二个参数,它是生成文件的权限参数。用0666 就行。

#include <stdio.h>
#include <unistd.h>
#include <wait.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/select.h>
#include <arpa/inet.h>
#include <wait.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#define  PATH "/home/wzpc/fifo1"int main(void){mkfifo(PATH,0666);int fd = open(PATH, O_WRONLY);write(fd,"hello",5);close(fd);return 0;
}

进程二:

#include <stdio.h>
#include <unistd.h>
#include <wait.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/select.h>
#include <arpa/inet.h>
#include <wait.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#define  PATH "/home/wzpc/fifo1"int main(void){int d=open(PATH,O_RDONLY);if(d==-1){puts("file error");}char c[5]={};read(d,c,5);printf("%s\n",c);return 0;
}

先起动进程一后,程序一一直等待,直到起动进程二后,进程一才退出等待继续执行。这样就完成了两进程的互斥交换数据。

或者先启动进程二,此进程也会等待,直到启动进程一后,进程二退出等待,继续执行。

也就是说,如进程的读,写fifo不设成非阻塞状态,先启动的一方必等待另一方启动后,交换了数据才会退出阻塞等待。保证了读写FIFO的成功。

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/106574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android fragment隐藏和显示重叠问题解决(叠加显示)

项目场景&#xff1a; 项目首页使用RadioGroupRadioButtonFragment实现页面切换&#xff0c;出现了一个问题fragment会出现重叠问题&#xff0c;就是一个fragment显示了两层&#xff0c; 并不是必现问题。 经过排查发现是项目主页面Activity被销毁重建了&#xff0c;但是之前…

【环境搭建】linux docker-compose安装mysql5.7

建议改一下配置&#xff0c;安装mysql8.0 新建目录 mkdir -p /data/docker/mysql/data mkdir -p /data/docker/mysql/logs mkdir -p /data/docker/mysql/conf 给权限 chmod -R 777 /data/docker/mysql 到目录 cd /data/docker/mysql 新建docker-compose.yml文件 vi doc…

【学习笔记】minIO分布式文件服务系统

MinIO 一、概述 1.1 minIO是什么&#xff1f; MinIO是专门为海量数据存储、人工智能、大数据分析而设计的对象存储系统。&#xff08;早前流行的还有FastDFS&#xff09; 据官方介绍&#xff0c;单个对象最大可存储5T&#xff0c;非常适合存储海量图片、视频、日志文件、备…

java.sql.SQLFeatureNotSupportedException解决方法

使用MyBatis访问数据库查询数据时报错&#xff1a; Caused by: java.sql.SQLFeatureNotSupportedExceptionat com.alibaba.druid.pool.DruidPooledResultSet.getObject(DruidPooledResultSet.java:1771)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun…

DB2分区表详解

一、分区表基本概念 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。分区后的表称为分区表。 表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个“表空间”(物理文件上),这样查询数据时…

03在命令行环境中创建Maven版的Java工程,了解pom.xml文件的结构,了解Java工程的目录结构并编写代码,执行Maven相关的构建命令

创建Maven版的Java工程 Maven工程的坐标 数学中使用x、y、z三个向量可以在空间中唯一的定位一个点, Maven中也可以使用groupId,artifactId,version三个向量在Maven的仓库中唯一的定位到一个jar包 groupId: 公司或组织域名的倒序, 通常也会加上项目名称代表公司或组织开发的一…

Linux命令(93)之su

linux命令之su 1.su介绍 linux命令su用于变更为其它使用者的身份&#xff0c;如root用户外&#xff0c;需要输入使用者的密码 2.su用法 su [参数] user su参数 参数说明-c <command>执行指定的命令&#xff0c;然后切换回原用户-切换到目标用户的环境变量 3.实例 3…

C++ 什么时候用`.template` 和 `::template`

C 什么时候用.template 和 ::template 简单来说&#xff0c;就是你有一个未知类型T**&#xff08;这个T本身就是模板&#xff09;** 假设这个T是一个类&#xff0c;这个类里包含了一些模板函数或者模板结构体 你需要使用T. 或者 T:: 去调用他们&#xff0c;并且要显示指定模板…

JDBC操作BLOB类型字段

JDBC中Statement接口本身不能直接操作BLOB数据类型 操作BLOB数据类型需要使用PreparedStatement或者CallableStatement(存储过程) 这里演示通过PreparedStatement操作数据库BLOB字段 设置最大传入字节 一般是4M 可以通过以下命令修改 set global max_allowed_packet1024*1…

网页在线打开PDF_网站中在线查看PDF之pdf.js

一、pdf.js简介 PDF.js 是一个使用 HTML5 构建的便携式文档格式查看器。 pdf.js 是社区驱动的&#xff0c;并由 Mozilla 支持。我们的目标是为解析和呈现 PDF 创建一个通用的、基于 Web 标准的平台。 pdf.js 将 PDF 文档转换为 HTML5 Canvas 元素&#xff0c;并使用 JavaScr…

Puppeteer结合测试工具jest使用(四)

Puppeteer结合测试工具jest使用&#xff08;四&#xff09; Puppeteer结合测试工具jest使用&#xff08;四&#xff09;一、简介二、与jest结合使用&#xff0c;集成到常规测试三、支持其他的几种四、总结 一、简介 Puppeteer是一个提供自动化控制Chrome或Chromium浏览器的Node…

MyBatis(中)

目录 1、动态sql&#xff1a; 1、if标签&#xff1a; 2、where标签&#xff1a; 3、 trim标签&#xff1a; 4、set标签&#xff1a; 5、choose when otherwise&#xff1a; 6、模糊查询的写法&#xff1a; 7、foreach标签&#xff1a; &#xff08;1&#xff09;批量删除…

施耐德Unity通过Modbus控制变频器

硬件设备 PLC: Unity Premium (CPU:TSX P57154) 通讯卡: TSX SCP 114 连接电缆: TSX SCP CM 4030 VSD: ATV 58 硬件连接 Unity Premium (CPU: TSX P57154)本身不带Modbus接口&#xff0c;因此&#xff0c;采用TSX SCP 114扩展一个Modbus接口。TSX SCP 114是一个RS-485接…

NumPy 基础知识

数据类型 数组类型之间的转换 NumPy支持比Python更多种类的数字类型。本节显示了哪些可用,以及如何修改数组的数据类型。 支持的原始类型与 C 中的原始类型紧密相关: Numpy 的类型C 的类型描述np.boolbool存储为字节的布尔值(True或False)np.bytesigned char平台定义np.…

【已解决】No Python at ‘D:\Python\python.exe‘

起因&#xff0c;我把我的python解释器&#xff0c;重新移了个位置&#xff0c;导致我在Pycharm中的爬虫项目启动&#xff0c;结果出现这个问题。 然后&#xff0c;从网上查到了这篇博客: 【已解决】No Python at ‘D:\Python\python.exe‘-CSDN博客 但是&#xff0c;按照上述…

【Docker】命令使用大全

【Docker】命令使用大全 目录 【Docker】命令使用大全 简述 Docker 的主要用途 基本概念 容器周期管理 run start/stop/restart kill rm pause/unpause create exec 容器操作 ps inspect top attach events logs wait export port 容器 rootfs 命令 c…

SpringSecurity源码学习三:认证

目录 1. 认证步骤2. 认证2.1 WebSecurityConfigurerAdapter配置介绍2.2 使用UsernamePasswordAuthenticationFilter登录认证2.2.1 UsernamePasswordAuthenticationFilter源码2.2.1.1 ProviderManager源码 2.2.2 认证流程总结 2.3 自定义登录认证代码示例2.3.1 认证流程总结 1. …

php的加密方式汇总

一、单列散列函数加密 1.md5()一般用于密码的不可逆加密 2.password_hash() //密码加密 $password 123456; $passwordHash password_hash($password,PASSWORD_DEFAULT,[cost > 12] );//密码验证 if (password_verify($password, $passwordHash)) {//Success } else {//…

8.Covector Transformation Rules

上一节已知&#xff0c;任意的协向量都可以写成对偶基向量的线性组合&#xff0c;以及如何通过计算基向量穿过的协向量线来获得协向量分量&#xff0c;且看到 协向量分量 以 与向量分量 相反的方式进行变换。 现要在数学上确认协向量变换规则是什么。 第一件事&#xff1a;…

前端小案例 | 一个带切换的登录注册界面(静态)

文章目录 &#x1f4da;HTML&#x1f4da;CSS&#x1f4da;JS &#x1f4da;HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sc…