手册页在这里:http://man.cat-v.org/unix-6th/3/ttyn

这个例子:

if (ttyn(0) = 'x'){
...
}

手册页说“如果指定的文件不对应于一个
打字机。”

指示的文件将是参数 0,所以是标准输入,对吗?

什么是打字机?我的键盘?

你用这条线检查什么?
if (ttyn(0) = 'x')

最佳答案

当时,打字机(或电传打字机或 tty)是通过串行端口连接到计算机的 RS-232 终端。 /dev 中与这些端口对应的设备条目被命名为 /dev/tty0/dev/tty1/dev/ttya 等。这些文件中的每一个都是字符特殊文件,而不是普通文件。

当系统检测到终端时,通常是通过打开或通过调制解调器连接,init 进程在新进程中打开文件描述符 0、1 和 2 上的设备,并且这些文件描述符在登录进程中持续存在,用户的 shell,以及从 shell 派生的任何进程。

正如您在问题中所说,文件描述符 0 也称为标准输入。
ttyn 函数在其参数上调用 fstat,它返回有关文件的一些信息,例如其 inode 编号、权限等。 ttyn 然后读取 /dev ,查看以 "tty" 开头的每个文件,以查看哪个文件具有相同的 inode 编号作为 ttyn 的论点。当找到匹配项时,它返回文件名的第 4 个字符,即 '0''1''a' 等。如果没有找到匹配项,则返回 'x'

PDP-11 上通常有一个控制台和几个 8 端口串行接口(interface)。所以没有 ttyx 。您可以在 /dev 中为设备命名任何您想要的名称。因此很容易避免 /dev/ttyx 成为实际设备。

goto 这样的命令可以使用 ttyn(0) != 'x' 来确定用户是否真的在终端上键入命令。

Here 是 V6 中 /etc/ttys 使用的默认配置文件 init 。控制台是 tty8

在 V7 Unix 中, ttyn 的功能被 ttyname 取代,它可以容纳更长的设备名称,而 isatty ,如果文件描述符是终端设备,则返回 true。 V7 中不存在 goto 命令。

关于tty - 函数 ttyn(3) 返回什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27681693/

10-13 03:26