24管道

管道读写规则:

当没有数据可读时

O_NONBLOCK disable:read调用阻塞,即进程暂停执行,一直等到有数据来到为止。

O_NONBLOCK enable:read调用返回-1,errno值为EAGAIN。

当管道满的时候

O_NONBLOCK disable: write调用阻塞,直到有进程读走数据

O_NONBLOCK enable:调用返回-1,errno值为EAGAIN

如果所有管道写端对应的文件描述符被关闭,则read返回0

如果所有管道读端对应的文件描述符被关闭,则write操作会产生信号SIGPIPE

当要写入的数据量不大于PIPE_BUF时,linux将保证写入的原子性。

当要写入的数据量大于PIPE_BUF时,linux将不再保证写入的原子性。

时间: 2024-12-29 15:30:58

24管道的相关文章

进程间通信第一课--管道

一个进程连接数据流到另一个进程--管道--pipe 进程管道 1 #include <stdio.h> 2 FILE * popen(const char * command, const char * open_mode) 3 int pclose(FILE * stream_to_close); popen函数允许一个程序将另一个程序作为新进程来启动并可以传递数据给它或者通过它接收数据command是要运行的程序名和相应的参数open_mode必须是r或者是wr的情况是:被调用程序的输出可

linux基础运维

一.系统常用的配置文件位置.和语法格式 1.常用的网络配置文件 /etc/sysconfig/network     网络设置(主机名也在这个文件配置 HOSTNAME=localhost.localdomain) NETWORK=yes/no 表示网络是否被配置: HOSTNAME=hostname hostname 表示服务器的主机名: GATEWAY=gw-ip gw-ip 表示网络网关的IP 地址: FORWARD_IPV4=yes/no 是否开启IP 转发功能: /etc/hosts

shell脚本的特殊字符

1. # 注释作用, #! 除外 此外, 在参数替换 echo ${PATH#*:} 这里不表示注释, 数制转换, 不表示注释 echo $((2#101011)) 2. ; 命令行分隔符, 可以在一行中写多个命令. echo hello; echo there 3. ;; 终止 case 选项 复制代码 代码如下: case "$variable" in abc) echo "\$variable = abc";; xyz) echo "\$variab

DOS命令说明

(转自:http://blog.csdn.net/mydriverc/article/details/2047152) 1 echo 和 @回显命令@                        #关闭单行回显echo off                 #从下一行开始关闭回显@echo off                #从本行开始关闭回显.一般批处理第一行都是这个echo on                  #从下一行开始打开回显echo                    

bash总结文档低四周笔记

1 vim 文件1 文件2 2 prev往前翻 next往后翻 3 vim -o/O 文件1.文件2  水平垂直显示屏幕 4 ^ w s 水平分割  ^ w.v将文件垂直分屏显示 5 讲其他文件内容填充至当前文件 :r .payh to somefiles 6 部分另存为  :w /PATH/ TO /SOMEFILES 7 bath特性 自定义命令 alias来查看命令 8 alise命令可以用来定义和显示命令的别名 私有bash的配置文件用于保存别名  ~/.bashrc 9 修改bash文

linux系统编程视频 百度网盘下载

本帖最后由 雇佣兵333 于 2015-5-19 16:15 编辑 c教程目录: Linux开发快速入门培训gcc快速入门Makefile快速入门GDB快速入门 Linux系统编程之文件篇01认识计算机系统(上)计算机系统组成计算机系统硬件组成总线I/O设备内存处理器(运算器+控制器) 02认识计算机系统(下)什么是操作系统Linux内核模块操作系统管理硬件操作系统三个基本抽象进程上下文切换进程虚地址空间虚拟文件系统(VFS) 03系统编程介绍系统编程与应用编程系统资源系统调用系统调用与C库关系

24 shell 管道命令与过滤器

1.管道命令的用法 2.使用管道命令的好处: 3.重定向和管道的区别 4.Linux管道实例 5.管道与重定向 1)管道与输入重定向 2)管道与输出重定向 6.过滤器 7.过滤器举栗 1.管道命令的用法 将两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或者多个命令就形成了管道(pipe).管道使用竖线|连接多个命令,这被称为管道符. Linux 管道的具体语法格式如下: command1 | command2command1 | comma

通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[下]:管道是如何构建起来的?

在<中篇>中,我们对管道的构成以及它对请求的处理流程进行了详细介绍,接下来我们需要了解的是这样一个管道是如何被构建起来的.总的来说,管道由一个服务器和一个HttpApplication构成,前者负责监听请求并将接收的请求传递给给HttpApplication对象处理,后者则将请求处理任务委托给注册的中间件来完成.中间件的注册是通过ApplicationBuilder对象来完成的,所以我们先来了解一下这究竟是个怎样的对象.[本文已经同步到<ASP.NET Core框架揭秘>之中] [

进程间通信之匿名管道

管道由pipe函数创建 #include<unistd.h> int pipe(int filedes[2]); 调用pipe函数在内核中开辟一块缓冲区(就是管道)用于通信,filedes[0]指向管道的读端,filedes[1]指向管道的写端.pipe函数调用成功返回0,调用失败返回-1. 比如,父进程关闭读端,子进程关闭写端.代码如下: 1   #include<stdio.h> 2   #include<string.h> 3   #include<unis