有名管道的大小

 管道:有名管道、无名管道

通信:

单工通信:固定的读端和写端 -- 广播

半双工通信:同一时刻,只有有一方写,另外一方读:对讲机

全双工通信:随时两方都能读写 -- 电话

特点:

管道属于半双工通信;

先进先出;

读取管道:read,当管道为空的时候,read会阻塞;

管道中的内容一旦读取就没有了;

管道的大小:64k -- 1024*64 = 65536字节

管道写满,write会阻塞;

有名管道

1、创建管道文件 -- mkfifo

2、通过open打开管道文件:

传参:mode:只能选择:O_RDONLY和O_WRONLY中的一个;

管道任意一端没有打开,open函数会阻塞;

3、读写  read  write;

一旦管道的写端关闭:读端read将不再阻塞,直接返回0

4、关闭:close

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>


int main()
{
    int res = access("1.fifo",F_OK);  //检测1.fifo是否存在
    //access 判断文件是否有某种权限或者判断文件是否存在
    //函数原型:int access(const char *pathname, int mode);
    //形参:pathname:文件名(路径) 
    //mode:F_OK 只判断是否存在、R_OK 只判断是否有读权限、W_OK 只判断是否有写权限、X_OK 判断是否有执行权限
    //返回值:有mode填写的权限,返回0,没有返回-1

    if(res == -1)   //如果不存在
    {
        res = mkfifo("1.fifo",0666);   //创建1.fifo
        if(res == -1)             //文件创建失败
        {
            perror("mkfifo");
            return -1;
        }
    }

    int w_fd = open("1.fifo",O_WRONLY);  //以只写的方式打开1.fifo这个文件
    if(w_fd == -1)   //打开失败
    {
        perror("open");
        return -1;
    }

    char ch = 'A';  //用于循环写入管道文件
    int count = 0;   //定义变量,统计写入的次数
    while(1)
    {
        write(w_fd,&ch,sizeof(ch));   //写入到1.fifo这个文件,一次写入一个字符
        count++;
        printf("count = %d\n",count);
    }

    close(w_fd);

    return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

int main()
{

    int res = access("1.fifo",F_OK);
    if(res == -1)
    {
        res = mkfifo("1.fifo",0666);
        if(res == -1)
        {
            perror("mkfifo");
            return -1;
        }
    }

    int r_fd = open("1.fifo",O_RDONLY);
    if(r_fd == -1)
    {
        perror("open");
        return -1;
    }

    while(1)
    {

    }
    return 0;
}

 两个代码同时运行,第一个是写端,第二个是读端

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Cosmos收益协议Hover以800%的超额认购结束公开销售

Hover&#xff0c;建立在Cosmos的Kava EVM上的可持续收益生态系统&#xff0c;在其公开销售中积累了超过800万美元的存款。 Hover&#xff0c;Kava EVM上新推出的收益生态系统&#xff0c;已经在顶级加密货币Launchpad DAO Maker上结束了其公开销售。通证销售旨在筹集100万美元…

Shell 脚本系列 | xsync同步脚本的使用

xsync是一个同步脚本&#xff0c;它实际上是对rsync脚本的二次封装&#xff0c;可以简化在多个节点之间同步文件的过程。以下是使用xsync工具的基本步骤&#xff1a; 1.确保已安装rsync。如果没有安装&#xff0c;可以使用以下命令进行安装&#xff1a; yum -y install rsync…

GB28181 —— Ubuntu20.04下使用ZLMediaKit+WVP搭建GB28181流媒体监控平台(连接带云台摄像机)

最终效果 简介 GB28181协议是视频监控领域的国家标准。该标准规定了公共安全视频监控联网系统的互联结构&#xff0c; 传输、交换、控制的基本要求和安全性要求&#xff0c; 以及控制、传输流程和协议接口等技术要求&#xff0c;是视频监控领域的国家标准。GB28181协议信令层面…

umi - react web端 集成腾讯即时通信IM,实现自定义翻译功能

项目使用umi - react 框架 在集成腾讯的IM的时候需要用到自定义翻译功能,调用自己的翻译服务 , 于是进行更改,发现按照官网提示的集成含UI的IM是直接下载依赖,然后引入组件包直接用,在官网上没看到有哪里配置自定义翻译的文档 , 于是咨询客服 最初的思路是在消息的更多选项中…

【Linux网络】网络编程套接字(TCP)

目录 地址转换函数 字符串IP转整数IP 整数IP转字符串IP 关于inet_ntoa 简单的单执行流TCP网络程序 TCP socket API 详解及封装TCP socket 服务端创建套接字 服务端绑定 服务端监听 服务端获取连接 服务端处理请求 客户端创建套接字 客户端连接服务器 客户端…

ubuntu20配置protobuf 2.5.0

python安装protobuf包 sudo pip2 install protobuf2.5.0github克隆获取安装包 wget https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz解压并进入该目录 tar -zxvf Protobuf-2.5.0.tar.gz cd protobuf-2.5.0配置安装环境 sudo …

【Vuforia+Unity】AR03-圆柱体物体识别(Cylinder Targets)

1.创建数据库模型 这个是让我们把生活中类似圆柱体和圆锥体的物体进行AR识别所选择的模型 Bottom Diameter:底部直径 Top Diameter:顶部直径 Side Length:圆柱侧面长度 请注意&#xff0c;您不必上传所有三个部分的图片&#xff0c;但您需要先为侧面曲面关联一个图像&#…

Atcoder ABC340 A-D题解

比赛链接:ABC340 话不多说&#xff0c;看题。 Problem A: 签到。 #include <bits/stdc.h> using namespace std; int main(){int a,b,d;cin>>a>>b>>d;for(int ia;i<b;id)cout<<i<<endl;return 0; } Problem B: 还是签到题。一个v…

张宇2025基础三十讲高等数学笔记(数二)

本次主要是根据书课包视频的进程&#xff0c;第1讲的01和02&#xff0c;分为基础知识和书上的例题加上经典1000题对应的相关的知识点 1.基础知识 1&#xff09;函数 2&#xff09;反函数 3&#xff09;复合函数 2.书上例题1000题 1&#xff09;函数 2&#xff09;反函数 3&a…

【Git】:远程仓库操作

远程仓库操作 一.理解版本控制系统二.远程仓库1.克隆2.Push操作3.fetch操作4. .gitnore文件 一.理解版本控制系统 我们⽬前所说的所有内容&#xff08;⼯作区&#xff0c;暂存区&#xff0c;版本库等等&#xff09;&#xff0c;都是在本地&#xff01;也就是在你的笔记本或者计…

杂题——1097: 蛇行矩阵

题目描述 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 输入格式 本题有多组数据&#xff0c;每组数据由一个正整数N组成。&#xff08;N不大于100&#xff09; 输出格式 对于每一组数据&#xff0c;输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角…

猜字谜|构建生成式 AI 应用实践(一)

在 2023 亚马逊云科技 re:Invent 之后&#xff0c;细心的开发者们也许已经发现有一个很有趣的动手实验&#xff1a;开发一款可部署的基于大语言模型的字谜游戏&#xff1a; 该款游戏使用了文生图模型为玩家提供一个未知的提示词&#xff0c;玩家需要根据模型生成的图像来猜测该…

Covalent Network(CQT)与 Movement Labs 达成合作,重新定义 M2 系统区块链数据可用性与性能

Covalent Network&#xff08;CQT&#xff09;是行业领先的多链索引器&#xff0c;正在与 Movement Labs 的 M2 展开具有突破性意义的合作。M2 是以太坊上的首个 Move-EVM&#xff08;MEVM&#xff09;ZK rollup 。这一战略合作标志着先进的实时数据索引和部署工具&#xff0c;…

如何实现H5和小程序之间相互跳转

嗨&#xff0c;各位小伙伴们&#xff0c;我是你们的好朋友咕噜铁蛋&#xff01;今天&#xff0c;我要和大家分享一下关于如何实现H5和小程序之间相互跳转的话题。随着移动互联网的发展&#xff0c;H5网页和小程序已经成为了我们日常生活中不可或缺的一部分。那么&#xff0c;如…

SD-WAN组网:打造跨国企业无缝网络连接体验

在数字化转型的时代&#xff0c;越来越多的企业迈向国际化&#xff0c;然而&#xff0c;由于自建网络架构的限制和跨域网络的复杂性&#xff0c;企业在不同地理位置的站点之间难以实现高效的数据互通和协作。这就是为什么SD-WAN成为跨国企业组网的理想选择的原因。 跨国企业常见…

vue中使用wangEditor富文本编辑器

jsd-2306-vue-01: 教学项目教学项目教学项目教学项目教学项目 2306-vue-baking-teacher: 教学项目教学项目教学项目教学项目 一、脚手架工程中使用富文本编辑器wangEditor 1.通过以下命令 安装wangEditor npm i wangeditor -S 2.在main.js文件中添加以下配置信息 //引入wa…

python 打包 apk

转换之前python代码需要使用指定的框架才能转换&#xff0c;列如&#xff1a;kivy from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Buttonimport time import pyautogui import threadingstatus False# 这是一个将被线程执…

[ 云计算 | AWS 实践 ] Java 应用中使用 Amazon S3 进行存储桶和对象操作完全指南

本文收录于【#云计算入门与实践 - AWS】专栏中&#xff0c;收录 AWS 入门与实践相关博文。 本文同步于个人公众号&#xff1a;【云计算洞察】 更多关于云计算技术内容敬请关注&#xff1a;CSDN【#云计算入门与实践 - AWS】专栏。 本系列已更新博文&#xff1a; [ 云计算 | …

HTML5技术实现的小钢琴

HTML5技术实现的小钢琴 用HTML5实现的小钢琴&#xff0c;按下钢琴键上的相应字母用或用鼠标点击钢琴键发声&#xff0c;源码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"v…

idea如何在一个service窗口中显示多个服务教程

idea在service窗口中显示多个服务 展示效果如下: 找到.idea > workspace.xml 中找到 RunDashboard 替换成如下 <component name"RunDashboard"><option name"configurationTypes"><set><option value"SpringBootApplicatio…