1、之所需要重定向的原因
子进程会从父进程那里继承一些已经打开了的文件。这些被打开的文件可能永远不被守护进程读或写,但它们一样消耗系统资源,而且可能导致所在的文件系统无法卸下,因此需要关闭。再需要的时候,重建输出
2、案例
2.1、 源码
2.2、运行结果
3、疑问
- $STDOUT, $STDERR 这并不是内置的变量, 只是普通的一个变量名称而已。为什么通过这样处理,就能实现输出重定向呢?
答: 如果关闭了标准输出,标准错误输出 文件描述符 ,那么你打开的前三个文件描述符将成为新的标准输入、输出、错误的描述符。而之所以把$STDIN, $STDOUT指定为全局变量,是因为在函数内部执行,如不是全局则它们将在函数执行完毕之后被释放。