zoukankan      html  css  js  c++  java
  • Linux 管道 管线

    
    

      管道是单向的、先进先出的、无结构的、固定大小的字节流,它把一个进程的标准输出和另一个进程的标准输入连接在一起。   

      写进程在管道的尾端写入数据,读进程在管道的首端读出数据;

      数据读出后将从管道中移走,其它读进程都不能再读到这些数据;

      管道提供了简单的流控制机制,进程试图读空管道时,在有数据写入管道前,进程将一直阻塞;

      同样,管道已经满时,进程再试图写管道,在其它进程从管道中移走数据之前,写进程将一直阻塞;


      于是就想到可以模仿重定向“>>”命令把管道里的内容写入一个文件

      ps | ./test

      test.c的代码如下

    int main()
    {
        int i;
        int f_w;
        char a[1000] = {0};
    
        f_w = open("/usr/test/log-ps.txt", 
                  O_WRONLY | O_CREAT,
                     S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
        
        for (i = 0; i < 1000; i++ ) {
           a[i] = getchar();
        }
    
        printf("%s", a);
        
        write(f_w, a, 1000);
    
        close(f_w);
        
        return 0;
    }
    


      因为找不到管道里数据的结束符,所以只读取了1000个


     

  • 相关阅读:
    Lc169_多数元素
    Lc461_汉明距离
    有返回值的多线程
    Lc344_反转字符串
    Lc709_转换成小写字母
    Lc1436_旅行终点站
    Spring 注解回顾
    SpringCloud网关之Zuul
    SpringCloud注册中心之Zookeeper
    SpringCloud服务安全之hystrix
  • 原文地址:https://www.cnblogs.com/idmask/p/4591005.html
Copyright © 2011-2022 走看看