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