Linux 管道 管線
阿新 • • 發佈:2019-01-27
管道是單向的、先進先出的、無結構的、固定大小的位元組流,它把一個程序的標準輸出和另一個程序的標準輸入連線在一起。
寫程序在管道的尾端寫入資料,讀程序在管道的首端讀出資料;
資料讀出後將從管道中移走,其它讀程序都不能再讀到這些資料;
管道提供了簡單的流控制機制,程序試圖讀空管道時,在有資料寫入管道前,程序將一直阻塞;
同樣,管道已經滿時,程序再試圖寫管道,在其它程序從管道中移走資料之前,寫程序將一直阻塞;
於是就想到可以模仿重定向“>>”命令把管道里的內容寫入一個檔案
ps | ./test
test.c的程式碼如下
因為找不到管道里資料的結束符,所以只讀取了1000個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; }