文档详情

Linux操作之输入输出重定向和管道.pdf

发布:2017-06-04约7.88千字共7页下载文档
文本预览下载声明
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
显示全部
相似文档