截图
简介
这是linux管道ppt,包括了重定向,管道,管道通信,重定向标准I/O,管道系统调用,管道—单向Vs双向等内容,欢迎点击下载。
linux管道ppt是由红软PPT免费下载网推荐的一款课件PPT类型的PowerPoint.
Linux管道通信 高文宇 gwy@gdcc.edu.cn Contents 重定向 管道 管道通信 重定向 “>”--标准输出重定向 “>>”--标准输出重定向,追加方式 “2>”--出错信息重定向 “<”--标准输入重定向 重定向标准I/O Linux shell(比如 Bash)接收或发送序列和字符串流 形式的输入或输出。每个字符都独立于与之相邻的字符。字符没有被组织成结构化记录或固定大小的块。不管实际的字符串流进入或来自文件、键盘、显示窗口或其他 I/O 设备,都使用文件 I/O 技术来访问流。Linux shell 使用 3 种标准的 I/O 流,每种流都与一个文件描述符相关联: stdout 是标准输出流,它显示来自命令的输出。它的文件描述符为 1。 stderr 是标准错误流,它显示来自命令的错误输出。它的文件描述符为 2。 stdin 是标准输入流,它为命令提供输入。它的文件描述符为 0。 输入流通常通过终端击键为程序提供输入。输出流通常向终端输出文本字符。最初的终端是 ASCII 打字机或显示终端,但现在更多是指图形桌面上的文本窗口。 重定向输出 可以通过两种方法将输出重定向到文件: n> 将输出从文件描述符 n 重定向到文件。用户必须具有该文件的写权限。如果该文件不存在,将创建它。如果该文件已经存在,通常将覆盖所有现有内容,并且没有任何警告。 n>> 还可以将输出从文件描述符 n 重定向到一个文件中。这里也一样要求用户具有该文件的写权限。如果该文件不存在,将创建它。如果该文件已经存在,输出将附加到现有的内容后面。 在 n> 或 n>> 中的 n 引用文件描述符。如果省略它,将执行标准输出。 重定向输出 在某些情况下,用户可能想要将标准输出和标准错误都重定向到一个文件中。这通常为自动进程或后台作业而执行的,以便以后可以查看输出。使用 &> 或 &>> 同时将标准输出和标准错误重定向到同一个文件中。另一种方法是,首先重定向文件描述符 n,然后使用 m>&n 或 m>>&n 将文件描述符 m 重定向到同一个文件。例如,command 2>&1 >output.txt 不同于command >output.txt 2>&1 在第一种情况中,stderr 被重定向到 stdout 的当前位置,然后在将 stdout 重定向到 output.txt,但第二次重定向仅影响 stdout,不影响 stderr。在第二种情况中,stderr 被重定向到 stdout 的当前位置,即 output.txt。我们在清单 5 中显示了这些重定向。注意,在最后一个命令中先重定向标准错误在重定向标准输出,所以标准错误输出仍然打印在终端窗口中。 重定向输入 就像可以重定向 stdout 和 stderr 流一样,也可以使用 < 操作符从文件重定向 stdin。 管道 “ | ”—管道 将一个程序或命令的输出作为另一个程序或命令的输入,有两种方法,一种是通过一个临时文件将两个命令或程序结合在一起;另一种是Linux所提供的管道功能。这种方法比前一种方法更好。 管道可以把一系列命令连接起来,这意味着第一个命令的输出会作为第二个命令的输入通过管道传给第二个命令,第二个命令的输出又会作为第三个命令的输入,以此类推。显示在屏幕上的是管道行中最后一个命令的输出(如果命令行中未使用输出重定向)。 通过使用管道符“|”来建立一个管道行。 管道 利用一个管道 # rpm -qa|grep licq 这条命令使用一个管道符“|”建立了一个管道。管道将rpm -qa命令的输出(包括系统中所有安装的RPM包) 作为grep命令的输入,从而列出带有licq字符的RPM包来。 利用多个管道 # cat /etc/passwd | grep /bin/bash | wc -l 这条命令使用了两个管道,利用第一个管道将cat命令(显示passwd文件的内容)的输出送给grep命令,grep命令找出含有“/bin/bash”的所有行;第二个管道将grep的输入送给wc命令,wc命令统计出输入中的行数。这个命令的功能在于找出系统中有多少个用户使用bash。 Unix管道 为了完成一项任务,在两个或多个进程进行合作时间,必定会发生数据共享。即便信号在其处理异常事件或者错误的时候非常有用,也完全不适合从一个进程到另一个进程传输大量的信息。一种解决这个问题的方法是进程共享文件,因为没有任何限制来阻止若干进程同时读写同一个文件。但是,这可能是一种低效的方法,而且不得不小心避免进程间竞争的问题。 为了解决这一问题,UNIX提供了一个称为管道的概念。管道通常被用作单向的通信管道,该信道将一个进程与另一个进程连接在一起,同时也是UNIX文件概念的另一个推广。正如我们将要看到的,进程可以通过write系统调用来向管道发送数据,而另一端的进程也可以通过使用read来接收数据。 管道系统调用 在一个程序内部,可以通过一个叫pipe的系统调用来创建管道。如果成功,该调用返回两个文件描述符:一个向管道写入,一个从管道读出。Pipe定义如下: 用法: #include
展开