一个 shell 会话中存在多少个 STDIN?

一个 shell 会话中存在多少个 STDIN?

我是一名初级 java 开发人员,对 UNIX 系统还是个新手。

我不知道我问的问题是否正确。

因此,在IDE环境中,STDIN通常指IDE的控制台。

在 UNIX shell 中,STDIN 似乎是指命令行提示符。

那么一个 shell 会话中可以存在多少个 STDIN?

除了 shell 提示符之外还有其他输入流吗?(类似于非标准输入、输出)

答案1

换个角度思考:

每一个过程有许多文件描述符。按照惯例,前三个是 stdin、stdout 和 stderr。

当您运行进程时,您可以将这些描述符“指向”不同的位置。

当您在 IDE 中运行 shell 时,IDE 会将这些 shell 指向 IDE 提供的控制台。

当您在 xterm 中运行 shell 时,xterm 将这些 shell 指向 xterm 提供的窗口/键盘交互。

当您通过串行端口(常见于嵌入式系统)运行 shell 时,这些端口将指向串行端口。

当您从 shell 运行 shell 并重定向它们时,您可以将它们指向一个文件。

同样,当您从 shell 运行其他进程(程序)时,您可以重定向该程序的 stdin 和 stdout,例如通过><

“STDIN 指的是命令行提示符。”没有意义。您可以说 shell 进程本身具有这些描述符,它们引用调用 shell 时设置的任何内容,并且 shell 可以将这些描述符继承到从 shell 启动的其他程序(或为这些程序使用不同的描述符)。

相关内容