zoukankan      html  css  js  c++  java
  • 管道命令 pipe |

    在Linux中,管道是一种使用非常频繁的通信机制。从本质上说管道是一种让各个命令共享数据的一个文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现为:

    一、限制管道的大小。

    实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4K字节,使得它的大小不象文件那样不加检验地增长。使用单个固定缓冲区也会带来问题,比如在写管道时可能变满,当这种情况发生时,随后对管道的write()调用将默认地被阻塞,等待某些数据被读取,以便腾出足够的空间供write()调用写。

    二、读取进程也可能工作得比写进程快。

    当所有当前进程数据已被读取时,管道变空。当这种情况发生时,一个随后的read()调用将默认地被阻塞,等待某些数据被写入,这解决了read()调用返回文件结束的问题。  

    注意

    1. 从管道读数据是一次性操作,数据一旦被读,它就从管道中被抛弃,释放空间以便写更多的数据。

    2. 管道“|”只能处理由前面一个命令传来的正确信息,即 standard output,对于 standard error 不能处理。

    3. 管道命令必须要能将接收到的 standard output 数据转换为 standard input数据。

  • 相关阅读:
    shell去重
    JDBC源码解析
    try catch finally
    URL
    域名与IP地址的联系与区别
    C++stack
    C++vector
    单链表常见面试题(C语言实现)
    数据库limit子句
    strcpy和memcpy的区别
  • 原文地址:https://www.cnblogs.com/orientsun/p/2608513.html
Copyright © 2011-2022 走看看