输入/输出重定向在 Linux/Unix 中如何工作?

输入/输出重定向在 Linux/Unix 中如何工作?

例子:

猫<测试.txt

  1. 文件的内容是否test.txt写入/传递到 的标准输入cat,然后cat读取其标准输入?

或者

  1. 文件test.txt本身是否成为 的标准输入cat?换句话说,是否通过将文本文件的文件描述符(fd)设置为0来cat更改stdin?test.txt

答案1

选项号 2:test.txt打开,并cat设置其标准输入指向该文件(文件描述符重复所以在最终运行的进程中它是 0 cat)。

在 Linux 上,您可以通过运行看到这一点

$ touch /tmp/foo
$ sleep 120 < /tmp/foo &
[1] 3006118
$ ls -l /proc/3006118/fd
total 0
lr-x------ 1 steve steve 64 May  4 16:11 0 -> /tmp/foo
lrwx------ 1 steve steve 64 May  4 16:11 1 -> /dev/pts/3
lrwx------ 1 steve steve 64 May  4 16:11 2 -> /dev/pts/3

流程的标准输入是/tmp/foo直接的。

相关内容