首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数ttyn(3)返回什么?

函数ttyn(3)返回什么?
EN

Stack Overflow用户
提问于 2014-12-28 15:08:33
回答 2查看 160关注 0票数 3

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

这个例子:

代码语言:javascript
复制
if (ttyn(0) = 'x'){
...
}

手册页说:“如果指定的文件与打字机不对应,则返回x。”

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

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

,你在检查这一行什么?

代码语言:javascript
复制
if (ttyn(0) = 'x')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-28 17:01:43

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

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

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

ttyn函数对其参数调用inode函数,该参数返回关于该文件的一些信息,如inode号、权限等。然后,ttyn函数通过/dev读取以"tty"开头的每个文件,以查看哪个文件与ttyn的参数具有相同的inode号。当找到匹配时,它返回文件名的第四个字符,即'0''1''a'等。如果没有找到匹配,则返回'x'

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

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

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

在V7 Unix中,丁恩的功能被点名 (可以容纳更长的设备名称)取代,而isatty (如果fle是终端设备)返回真。转到命令在V7中不存在。

票数 7
EN

Stack Overflow用户

发布于 2014-12-28 17:10:54

我以前从未见过这个库调用;我已经习惯了更熟悉的ttyname。该网页不提供返回值,但根据文本的内容,它将给出ttynam(3)返回的字符串中的最后一个ttynam(3)值。因此,如果stdin (fd0)连接到“/dev/tty2 2”,则返回值为char 2。在C语言中,您可以使用以下方法进行检查:

代码语言:javascript
复制
if (ttyn(0) == '2') { ... }

当然,文件还不清楚。它使用的是糟糕的术语,而不是“打字机”,它应该使用“电传打字”或“终端”,这是公认的术语。请记住,stdin可以与stdout不同;假设您拥有cat </dev/tty1 > /dev/tty2的权限,那么完全有可能运行它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27681693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档