1. 程式人生 > >Linux 管道 管線

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個