Linux系统编程--管道

1、管道(一)

1.1、什么是管道

例如:ls | wc -w这条命令,ls是一个进程,把结果通过|管道输出到wc这个进程中,所以管道本质上是一个内核缓冲区

1.2、管道限制

1.3、匿名管道pipe

1.4、创建管道后示意图

管道只能用于亲缘关系的进程间通讯,因为管道的文件描述符只能通过子进程继承父进程得来的

下面示例:子进程关闭读端,用写端向父进程写数据,然后关闭写端,父进程关闭写端,读取数据,然后关闭读端。

模拟ls | wc -w

2、管道(二)

2.1、管道的读写规则

没有数据读时:

所有写端文件描述符关闭:

所有读端对应的文件描述符被关闭:

当管道这个内核缓冲区满的时候

管道是默认阻塞,一直向管道写数据:满了就会阻塞

改成非阻塞模式:管道的容量64K

相关推荐

  1. 系统编程:管道

    2024-04-03 03:28:01       37 阅读
  2. Linux系统编程_文件编程

    2024-04-03 03:28:01       28 阅读
  3. Linux 系统编程

    2024-04-03 03:28:01       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 03:28:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 03:28:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 03:28:01       82 阅读
  4. Python语言-面向对象

    2024-04-03 03:28:01       91 阅读

热门阅读

  1. 416. 分割等和子集(力扣LeetCode)

    2024-04-03 03:28:01       40 阅读
  2. 服务器配置Huggingface并git clone模型和文件

    2024-04-03 03:28:01       37 阅读
  3. 我国某高新技术企业遭境外黑客攻击

    2024-04-03 03:28:01       37 阅读
  4. 关于开源和闭源

    2024-04-03 03:28:01       40 阅读
  5. leetcode 2810.故障键盘

    2024-04-03 03:28:01       37 阅读
  6. C++经典面试题目(十九)

    2024-04-03 03:28:01       24 阅读
  7. mysql表列中字符串逗号分割转列

    2024-04-03 03:28:01       43 阅读
  8. 音视频处理相关基础概念

    2024-04-03 03:28:01       32 阅读
  9. 关于Qt的安装与版本更换

    2024-04-03 03:28:01       41 阅读
  10. 面试题:Spring RESTful服务设计与控制器最佳实践

    2024-04-03 03:28:01       34 阅读
  11. C# 委托与事件 终章

    2024-04-03 03:28:01       39 阅读
  12. TypeScript-数组、函数类型

    2024-04-03 03:28:01       30 阅读
  13. 动态规划详解

    2024-04-03 03:28:01       42 阅读