当前位置: 首页 > news >正文

Linux中pipe管道操作

管道的读写操作:

读操作:

  • ​​​有数据:read正常读,返回读出的字节数
  • 无数据:1 写段全部关闭:read解除阻塞,返回0,相当于文件读到了尾部
  •                2 写段没有全部关闭:read阻塞

写操作: 

  • 读端全部关闭:管道破裂,进程终止,内核给当前进程发SIGPIPE信号
  • 读端没有全部关闭:缓冲区写满了,write阻塞
  •                                 缓冲区没有满,继续write

设置管道为非阻塞:

 若想设置读写两端为非阻塞,则可以这样做:

int flag=fcntl(fd[0],F_GETFL,0);

flag = flag | NONBLOCK;

fcntl(fd[0],F_SETFL,flag);

若是读端为非阻塞:

写端没有关闭:管道中没有数据可读,返回-1

写端没有关闭:管道中有数据可读,返回实际读到的字节数

写端已经关闭:管道中有数据可读,返回实际读到的字节数

写端已经关闭:管道中没有数据可读,返回0

如何查看管道缓冲区大小:

ulimit -a

如下:

http://www.lryc.cn/news/298628.html

相关文章:

  • 中年中产程序员从西安出发到海南三亚低成本吃喝万里行:西安-南宁-湛江-雷州-徐闻-博鳌-陵水-三亚-重庆-西安(2.游玩过程)
  • day38 面向对象编程、构造函数等(纯概念)
  • nginx用域名http://xx.com/aaa/代理一个网页http://ff.com但是请求资源时发生404
  • NLP_词的向量表示Word2Vec 和 Embedding
  • python:xml.etree 生成思维导图 Freemind文件
  • Solidworks:从2D走向3D
  • 【开源】JAVA+Vue.js实现高校学院网站
  • 题解19-24
  • 基于图像掩膜和深度学习的花生豆分拣(附源码)
  • 【网络】:序列化和反序列化
  • AJ-Report 【开源的一个BI平台】
  • Matplotlib核心:掌握Figure与Axes
  • 问题:A注册会计师必须在期中实施实质性程序的情形是()。 #学习方法#其他
  • C#系列-C#EF框架返回单行记录(24)
  • 【PyTorch】张量(Tensor)的生成
  • 【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-Viterbi译码原理
  • 矩阵在计算机图像处理中的应用
  • Java实现教学资源共享平台 JAVA+Vue+SpringBoot+MySQL
  • Spring Boot(六十五):使用 ant.jar 执行 SQL 脚本文件
  • 161基于matlab的快速谱峭度方法
  • CTFshow-WEB入门-信息搜集
  • django密码管理器(创建项目)
  • Centos7之Oracle12c安装与远程连接配置
  • CVE-2022-25578 漏洞复现
  • Ubuntu22.04安装黑屏(进入U盘安装引导时 和 安装完成后)
  • 一、DataX简介
  • 直播app开发,技术驱动的实时互动新纪元
  • Apache POI的介绍以及使用示例
  • npm config set registry https://registry.npm.taobao.org 这个设置了默认的镜像源之后如何恢复默认的镜像源
  • 算法沉淀——位运算(leetcode真题剖析)