管道是单向的、先进先出的、无结构的、固定大小的字节流,它把一个进程的标准输出和另一个进程的标准输入连接在一起。
写进程在管道的尾端写入数据,读进程在管道的首端读出数据;
数据读出后将从管道中移走,其它读进程都不能再读到这些数据;
管道提供了简单的流控制机制,进程试图读空管道时,在有数据写入管道前,进程将一直阻塞;
同样,管道已经满时,进程再试图写管道,在其它进程从管道中移走数据之前,写进程将一直阻塞;
于是就想到可以模仿重定向“>>”命令把管道里的内容写入一个文件
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; }