函数ttyn(3)返回什么?

Joe*_*oey 3 c tty

手册页位于:http://man.cat-v.org/unix-6th/3/ttyn

这个例子:

if (ttyn(0) = 'x'){
...
}
Run Code Online (Sandbox Code Playgroud)

手册页说" 如果指示的文件与打字机不对应,则返回x. "

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

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

你用这条线检查什么?

if (ttyn(0) = 'x')
Run Code Online (Sandbox Code Playgroud)

Mar*_*ick 7

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

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

正如您在问题中所说,文件描述符0也称为标准输入.

ttyn函数调用fstat其参数,该参数返回有关文件的一些信息,例如其inode编号,权限等,ttyn然后读取/dev,查看以每个文件开头的文件"tty",以查看哪个文件具有与ttyn参数相同的inode编号.当它找到一个匹配,它返回的文件名,这将是第4字'0','1','a'等等.如果没有找到匹配,则返回'x'.

PDP-11上通常有一个控制台和一些8端口串行接口.所以没有ttyx.你可以在/dev任何你想要的东西中命名设备.因此很容易避免/dev/ttyx成为一个真正的设备.

类似的命令goto可用于ttyn(0) != 'x'确定用户是否实际在终端上键入命令.


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

在V7 Unix中,ttyn的功能被替换为ttyname,ttyname可以容纳更长的设备名称,并且isatty,如果fle描述符是终端设备则返回true.该跳转指令不存在于V7.