一、前言
作为程序员,肯定都听过标准IO这个概念,标准IO字面上指的是标准输入、标准输出以及标准错误。听起来让人感觉似懂非懂,本文就来讨论,究竟何为标准IO。
二、什么是标准IO
简单来说,标准输入就是程序数据的来源,标准输出就是程序默认输出结果的地方。
我们在终端执行程序的时候,程序中使用printf打印的日志都是输出到终端上的,大多数时候,也是通过终端往程序中输入数据的。
“一切皆文件”是unix系统的思想,每当运行一个新程序时,所有的shell都为其打开3个文件描述符,即标准输入、标准输出以及标准错误。相当于每次运行一个程序时,都会打开三个文件。如果不做特殊的处理,这三个描述符都链接向终端,所以我们往终端输入数据,最终会写到文件描述符对应的文件中,然后程序才能接收到。程序中的输出也是如此。
大多数shell都提供了一种方法,使任何一个或三个描述符都能重新定向到某个文件中。'<‘代表输入重定向,’>'代表输出重定向。
综上,对于每个执行中的程序来说,标准输入和标准输出默认是终端,但都可重定向到其他地方。
参考资料:
《UNIX环境高级编程(第3版) (史蒂文斯 (W.Richard Stevens) 拉戈 (Stephen A.Rago)) (Z-Library)》