第三季-第14课-有名管道通讯编程
第14课-有名管道通讯编程
14.1 核心理论--有名管道
有名管道又称为FIFO文件,因此我们对有名管道的操作可以采用操作文件的方法,如使用open,read,write等。
FIFO文件在使用上和普通文件又相似之处,但是也有不同之处:
1. 读取FIFO文件的进程只能以“RDONLY”方式打开fifo文件。
2. 写FIFO文件的进程只能以“WRONLY”方式打开fifo文件。
3. FIFO文件里面的内容被读取后,就消失了。但是普通文件里面的内容读取后还是存在的。
注:在vim命令里面,在底部打入:set nu可以显示行数。
14.2 函数学习
1. 创建有名管道
(1) 函数名
mkfifo
(2) 函数原形
int mkfifo(const char *pathname, mode_t mode);
(3) 函数功能
创建FIFO文件(有名管道)。
(4) 所属头文件
#include<sys/types.h>
#include<sys/stat.h>
(5) 返回值
成功:0
失败:-1
(6) 参数说明
pathname:我们创建的fifo文件的名字(包含路径)。
mode:fifo文件的访问权限
2. 删除有名管道
(1) 函数名
unlink
(4) 函数原形
int unlink(const char *pathname);
(5) 函数功能
删除FIFO文件(有名管道)以及普通文件。
(4) 所属头文件
#include<unistd.h>
(5) 返回值
成功:0
失败:-1
(6) 参数说明
pathname:我们要删除的文件的名字(包含路径)。
14.3 综合实例编程
任意两个进程利用有名管道通讯。
创建写进程程序:
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
void main()
{
int fd;
/*1.创建fifo文件*/
mkfifo("/tmp/myfifo",0666);
/*2.打开fifo文件*/
fd = open("/tmp/myfifo",O_WRONLY);
/*3.写入数据fifo文件*/
write(fd,"hello fifo",11);
/*4.关闭fifo*/
close(fd);
}
创建读进程程序:
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
void main()
{
int fd;
char c_buf[15];
/*1.打开fifo文件*/
fd = open("/tmp/myfifo",O_RDONLY);
/*2.读fifo文件数据*/
read(fd,c_buf,11);
printf("read is %s\n",c_buf);
close(fd);
unlink("/tmp/myfifo");
}
运行结果:当运行./fifo_write时,程序会处于阻塞状态。直达我们在另一个窗口运行./fifo_read时,阻塞状态才会解除,并且打印:read is hello fifo
转载于:https://www.cnblogs.com/free-1122/p/11346198.html
第三季-第14课-有名管道通讯编程相关推荐
- 13.无名管道通讯编程
13.无名管道通讯编程 1.进程间的通信: Linux作为典型的多进程操作系统,进程与进程之间肯定需要信息交流,这就需要进程通信. 2.进程通信的目的: 1.数据传输:一个进程需要将数据发送给另一个进 ...
- linux有名管道数据异常,Linux系统编程—有名管道
▋****1. 管道的概念 管道,又名「无名管理」,或「匿名管道」,管道是一种非常基本,也是使用非常频繁的IPC方式. 1.1 管道本质 管道的本质也是一种文件,不过是伪文件,实际上是一块内核缓冲区, ...
- 【Linux系统编程学习】匿名管道pipe与有名管道fifo
此为牛客Linux C++和黑马Linux系统编程课程笔记. 0. 关于进程通信 Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间.任何一个进程的全局变量在另一个进程中都看不到 ...
- linux进程通信1:进程通信概述,管道通信原理(无名管道,有名管道),管道编程实战
进程通信概述,管道通信原理(无名管道,有名管道),管道编程实战 1.进程间通信概述: 举例1: 你手机微信和别人手机微信通信 举例2: 如:父子进程wait 和 exit之间的通信 进程间通信(IPC ...
- linux进程间通讯-有名管道
文章目录 阻塞和非阻塞概念 通过fcntl函数设置文件的阻塞特性 文件描述符概述 文件描述符的复制 有名管道 有名管道的创建 有名管道的基本读写操作 有名管道实现进程间通信 有名管道的读写规律(阻塞) ...
- 【Linux系统编程】进程间通信--有名管道
命名管道的概述 无名管道,由于没有名字,只能用于亲缘关系的进程间通信(更多详情,请看<无名管道>).为了克服这个缺点,提出了命名管道(FIFO),也叫有名管道.FIFO 文件. 命名管道( ...
- Linux系统编程:fifo有名管道的使用
fifo介绍 我们可以利用管道进行进程间通信,已经有匿名管道 为啥还要fifo 有名管道呢?有名管道是对匿名管道的一个补充,匿名管道是用在有血缘关系的进程间通信.fifo有名管道呢,可以用在任何进程间 ...
- 【编撰】linux IPC 002 - 匿名管道PIPE和有名管道FIFO的概念和实例,以及应用比较
前言:上一节提到IPC的概述,本一节,原文作者比较详细的讨论了,管道的概念和实例和使用场景: 原文作者:郑彦兴 (mlinux@163.com)国防科大计算机学院 http://www.ibm.com ...
- 视频教程-Kali Linux渗透测试全程课与脚本语言编程系列课程-渗透测试
Kali Linux渗透测试全程课与脚本语言编程系列课程 本人有多年的服务器高级运维与开发经验,擅长计算机与服务器攻防及网络攻防技术!对网络安全领域有持续的关注和研究! 林晓炜 ¥899.00 立即订 ...
- linux系统调用创建无名管道,linux 无名管道pipe和有名管道FIFO
1.管道(pipe) 管道是进程间通信的主要手段之一.一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个已经打开文件进行,它们分别代表管道的两端.管道是一种特殊的文件,它不属于某一种 ...
最新文章
- Windows上安装MinGW(GCC),各个Package的作用
- Spring事务的处理流程、传播属性、及部分释疑
- WebService的两种方式SOAP和REST比较
- 第44讲:scrapy中间键Middleware的使用
- 【Docker】Asp.net core在docker容器中的端口问题
- python文本分词_【Python】使用jieba对文本进行分词
- python图像处理:一福变五福
- 中班音乐 机器人教案_【李小娜老师优秀教案分享】中班音乐活动小树叶教案及反思...
- 【Kafka】Kafka生产者producer相关参数详解batch.size linger.ms 等参数
- java 大型互联网架构_分享一些大型互联网架构常用的高端技术
- java启动mysq服务_启动和关闭MySQL服务
- HCIE-Security Day5:防火墙会话表和转发原理
- Python实现批量处理扫描特定目录
- Maven—Eclipse设置Maven项目JDK版本
- AI专利申请5年激增1.8倍
- JAVA调用海康威视SDK
- 从0开始的技术美术之路(十)伽马校正
- 《云计算技术与应用基础》课程标准
- 微信小程序-001-抽签功能-000-目录概要
- BestSync多终端文件资料同步利器
热门文章
- python中datetime模块是以什么时间为基础_python基础-time和datetime模块
- Git安装配置与GitHub注册及简单使用
- office 论文 页码_还在花钱找人排版?这份最全攻略,让你论文一次过!
- SurfaceView浅析
- xpath的基础知识
- buck变换器设计matlab_电力电子变换器控制设计(1)
- 电信公网ip和内网ip的区别_私有IP共有IP和弹性IP的区别
- Java在W10_java——基础 在w10环境下如何配置java环境
- golang语言示例:--->下载网站的json文件,同时对文件进行分析输出
- python-gui-pyqt5的使用方法-6--lambda传递参数的方法: