TTYSLOT
Section: Linux Programmer's Manual (3)
Updated: 2007-07-26
Index
JM Home Page
roff page
名前
ttyslot - カレントユーザの端末のスロットをファイルから探す
書式
#include <unistd.h> /* BSD 系のシステムと Linux の場合 */
#include <stdlib.h> /* System V 系のシステムの場合 */
int ttyslot(void);
glibc 向けの機能検査マクロの要件
(feature_test_macros(7)
参照):
ttyslot():
_BSD_SOURCE || (_XOPEN_SOURCE_EXTENDED && ! _XOPEN_SOURCE >= 500)
説明
レガシーな関数
ttyslot()
は、あるファイルに書かれているカレントユーザのエントリのインデックスを返す。
「どのファイルなのか?」という質問があるだろう。
では、まず最初にその歴史を見てみよう。
大昔の歴史
Unix V6 では
/etc/ttys
ファイルが使われていた。
init(8)
プログラムは、このファイルを読み込み、
各端末行で何をすべきかを探す。
各行は 3 文字から構成されている。
1 文字目は '0' または '1' であり、
2 文字目は端末を示す: '8' は "/dev/tty8" を表す。
3 文字目は
getty(8)
への引き数であり、(接続を) 試みる回線速度の順序を表す
('-' は 110 ボーで接続の試行を開始することを表す)。
よって一般的な行は "18-" となる。
ある行でハングした場合は、'1' を '0' に変更し、
init にシグナルを送り、'0' を '1' 再度に変更し、
init に再度シグナルを送ることで解決する。
Unix V7 ではフォーマットが変更された:
2 文字目が
getty(8)
の引き数となり、(接続を) 試みる回線速度の順序を表すようになり
('0' は 300-1200-150-110 を繰り返すことを表し、
'4' はオンラインコンソール DECwriter を表す)、
行の残り (の文字) は端末名となった。
よって、一般的な行は "14console" となる。
後者のシステムの書式は、より精巧である。
System V 系のシステムでは、代わりに
/etc/inittab
がある。
大昔の歴史 (2)
一方、現在ログインしている人をリストするファイル
/etc/utmp
がある。
これは
login(8)
によって管理されている。
このファイルは固定されたサイズであり、ファイル内の適切なインデックスは、
login(8)
によって決定される。
この際に
ttyslot()
が呼ばれて、
/etc/ttys
における行番号を見つける (行番号は 1 から数える)。
ttyslot の意味
よって、関数
ttyslot()
は、ファイル
/etc/ttys
におけるカレントプロセスの制御端末のインデックスを返す。
これは
/etc/utmp
におけるカレントユーザのエントリのインデックスと (通常は) 等しい。
BSD には未だに
/etc/ttys
ファイルがあるが、System V 系のシステムにはないので、
このファイルを参照することはできない。
よって、そのようなシステムでは
「ttyslot()
はカレントユーザのユーザアカウントデータベースにおけるインデックスを返す」
とドキュメントに書かれている。
返り値
成功した場合、この関数はスロット番号を返す。
エラーの場合
(例えば、ファイルディスクリプタ 0, 1, 2 の何れも
データベースにある端末に関連づけられていない場合)、
Unix V6, V7, BSD 系のシステムは 0 を返すが、
System V 系のシステムは -1 を返す。
準拠
SUSv1。SUSv2 では「過去の名残 (LEGACY)」と位置付けられている。
POSIX.1-2001 で削除された。
SUSv2 ではエラー時に -1 を返すことが要求されている。
注意
utmp ファイルは様々なシステムで
/etc/utmp,
/var/adm/utmp,
/var/run/utmp
のようにいろいろな場所にある。
この関数の glibc2 における実装では、ファイル
_PATH_TTYS
を読み込む。
これは
<ttyent.h>
において "/etc/ttys" と定義されている。
エラーの場合、0 を返す。
Linux システムには通常 "/etc/ttys" がないので、常に 0 を返す。
Minix には
fttyslot(fd)
もある。
関連項目
getttyent(3),
ttyname(3),
utmp(5)
Index
- 名前
-
- 書式
-
- 説明
-
- 大昔の歴史
-
- 大昔の歴史 (2)
-
- ttyslot の意味
-
- 返り値
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:32:09 GMT, November 19, 2007