我是一名初级 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 启动的其他程序(或为这些程序使用不同的描述符)。