我已经发布了一个问题,在一种非常规的串行端口上从用户空间进行打印。 linux non-standard serial console
但是,我意识到我对用户空间打印的架构有点困惑。
- 用户空间 printf 将其数据发送到哪里?我看到 stdout/stdin 符号链接(symbolic link)到 tty/pty 之一?但是谁设置了这个链接?
- tty 如何连接到可用的控制台?或者让我们说:tty 核心如何与控制台交互?
最佳答案
printf()
写入 stdout
,这是一个包装文件描述符 1 的 FILE *
。文件描述符要么从父级继承,要么明确地打开。如果您在典型系统中沿着进程层次结构向上移动,您最终会到达一个 login
进程,它通常由 *getty
进程产生。 getty 进程连接到具有适当设置(线速度、奇偶校验...串行线路)的终端,并且通常在第一个键/ENTER 键上生成 login
。在传统的初始化系统上,getty 通常直接从 /etc/inittab
启动。
关于linux - 用户空间打印、控制台和 tty 之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282498/