TTYSLOT - Linux手册页
Linux程序员手册 第3部分
更新日期: 2017-09-15
名称
ttyslot-在某些文件中找到当前用户终端的插槽
语法
#include /请参阅注释* /
int ttyslot(无效);
glibc的功能测试宏要求(请参阅feature_test_macros(7)):
ttyslot():
- 从glibc 2.24开始: _DEFAULT_SOURCE 从glibc 2.20到2.23: _DEFAULT_SOURCE _XOPEN_SOURCE && __ XOPEN_SOURCE
说明
遗留函数ttyslot()返回某个文件中当前用户条目的索引。
现在,"什么文件?"你问。好吧,让我们先来看一些历史。
Ancient history
在UNIX V6中曾经有一个文件/ etc / ttys,该文件由init(1)程序读取以找出如何处理每条终端线。每行包含三个字符。第一个字符是aq0aq或aq1aq,其中aq0aq表示"忽略"。第二个字符表示终端:aq8aq代表" / dev / tty8"。第三个字符是getty(8)的参数,指示要尝试的线速顺序(aq-aq为:开始尝试110波特)。因此,典型的行是" 18-"。通过将aq1aq更改为aq0aq,发信号通知init,再次更改回去,并再次发信号通知init,解决了挂断问题。
在UNIX V7中,格式已更改:这里的第二个字符是getty(8)的参数,指示尝试的线速顺序(aq0aq为:循环通过300-1200-150-110波特; aq4aq用于在线控制台DECwriter),而该行的其余部分包含tty的名称。因此,典型的行是" 14console"。
以后的系统具有更精细的语法。类似V系统的系统改用/ etc / inittab。
Ancient history (2)
另一方面,文件/ etc / utmp列出了当前登录的人员。该文件由login(1)维护。它具有固定的大小,并且文件中的适当索引由login(1)使用ttyslot()调用确定,以在/ etc / ttys中找到行号(从1开始)。
The semantics of ttyslot
因此,函数ttyslot()返回文件/ etc / ttys中调用进程控制终端的索引,并且(通常)与文件/ etc /中当前用户条目的索引相同。 utmp。 BSD仍然具有/ etc / ttys文件,但是类似System V的系统没有,因此无法引用它。因此,在这样的系统上,文档说ttyslot()返回用户记帐数据库中的当前用户索引。
返回值
如果成功,此函数将返回插槽号。发生错误时(例如,如果文件描述符0、1或2没有与该数据库中出现的终端相关联),则在UNIX V6和V7以及类似BSD的系统上返回0,而在类似于System V的系统上返回-1系统。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
ttyslot() | Thread safety | MT-Unsafe |
遵循规范
SUSv1;在SUSv2中标记为LEGACY;已在POSIX.1-2001中删除。 SUSv2错误要求为-1。
备注
utmp文件位于各种系统的各个位置,例如/ etc / utmp,/ var / adm / utmp,/ var / run / utmp。
该函数的glibc2实现读取文件_PATH_TTYS,该文件定义为" / etc / ttys"。错误返回0。由于Linux系统通常没有" / etc / ttys",因此它将始终返回0。
在类似BSD的系统和Linux上,ttyslot()的声明由提供。在类似于System V的系统上,声明由提供。从glibc 2.24开始,该声明还为声明提供了以下功能测试宏定义:
(_XOPEN_SOURCE >= 500 || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED)) && ! (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
Minix也有fttyslot(fd)。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。