在 Linux 中,每个进程都使用一组打开的文件。现在,bash(一个 shell)也是一个使用不同文件描述符进行标准输入输出的进程。如果我找到一些文件描述符:
ls -l /proc/$$/fd
lrwx------ 1 viky viky 64 Jan 15 16:29 0 -> /dev/pts/0
lrwx------ 1 viky viky 64 Jan 15 16:29 1 -> /dev/pts/0
lrwx------ 1 viky viky 64 Jan 15 16:29 2 -> /dev/pts/0
lrwx------ 1 viky viky 64 Jan 15 16:30 255 -> /dev/pts/0
现在,0、1、2、255 是文件描述符。现在,如果我们在这里看到 0、1、2 指向我当前的终端(从终端获取输入并向终端显示输出和错误)。问题是,stdin(/dev/stdin)、stdout(/dev/stdout)和 stderr(/dev/stderr)的作用是什么。0、1、2 是 stdin、stdout 和 stderr 的默认标准流。
标准流与上述命令的输出有何关系?
假设 /dev/stdin 的文件描述符为 0 。那么对于 bash 进程来说 /dev/stdin 是否链接到 /dev/pts/0 ?
谁能详细解释一下?