Linux操作之输入输出重定向和管道.pdf
文本预览下载声明
Linux
Linux
LLiinnuuxx操作之输入输出重定向和管道
Unix下使用标准输入stdin和标准输出stdout,来表示每个命令的输入和输出,还使
用一个标准错误输出stderr用于输出错误信息。这三个标准输入输出系统缺省与控制终
端设备相联系在一起的。因此,在标准情况下,每个命令通常从它的控制终端中获取输
入,将输出打印到控制终端的屏幕上。
但是也可以重新定义程序的输入 stdin和输出stdout,将它们重新定向。最基本的用
法是将她们重新定义到一个文件上去,从一个文件获取输入,输出到另外的文件中等。
$ls ls.out
$catls.out
这种输入输出重定向带来了极大的灵活性,可以将输出结果记录下来,也可以将程
序所需要的输入使用文件提前准备就绪,这样一来多次执行就不需要重新输入。
$echo “today is“out
$date out
使用 标记表示输出结果采用添加的方式,将结果附加在文件out 后面,而不是简
单的将原有文件重新覆盖的方式。
更为灵活的方式是将输入输出和一个执行命令联系起来,而不是一个固定的文件。
$ls -l| grep mbox
上面的命令,将 ls-l的输入作为grep 的输入,这种方式称为管道。Unix提供了很
多功能强大的小命令,但使用管道将这些命令组合起来,就形成了非常强大的工具组合,
能完成非常复杂的工作。
Unix系统提供了一些特殊的设备文件,用在一些特殊情况下。例如一个特殊设备文
件为/dev/null,永远无法写满,写入的内容被系统立即丢弃。如果不想看到程序的输出,
可以使用它作输出。
$make world/dev/null
去除了屏幕输出,使整个程序执行过程非常平静。
管道文件 (转载 LINUX 下 C 入门)
LINUX 还提供了 ;| 等等重定向操作符.在这些过滤和重 定向程序当中,都用到了管
Linux 操作系统 C 语言编程入门
[24 of 104]
道这种特殊的文件.系统调用pipe 可以创建一个管道.
#includeunistd.h;
int pipe(int fildes[2]);
pipe 调用可以创建一个管道(通信缓冲区).当调用成功时,我们可以访问文件描述符fild
es[0],fildes[1].其中fildes[0]是用来读的文件描述符,而fildes[1]是用来写的文件描
述符.
在实际使用中我们是通过创建一个子进程,然后一个进程写,一个进程读来使用的
程序已修改调过,正确:
#include stdio.h
#include stdlib.h
#include unistd.h
#include string.h
#include errno.h
#include sys/types.h
#include sys/wait.h
#define BUFFER 255
int main(int
显示全部