TTYNAME(3)

名称
ttyname, isatty, ttyslot - ファイル記述子からそれに結合されている端末 (tty) の名前を取得

書式
#include <unistd.h> char * ttyname(int fd) int isatty(int fd) int ttyslot(void)

解説
これらの関数は、端末タイプデバイスに関するシステムファイル記述子を 操作します。これらの記述子は標準の I/O FILE typedef とは関係を持っておらず、 /dev ディレクトリ中にあって /dev/ttyxx という名前を持ち、 それについては初期設定ファイル /etc/ttys の中にエントリが存在するような特別デバイスファイルを参照します( ttys(5) 参照 )。

isatty() 関数は、ファイル記述子 fd が有効な端末タイプデバイスを参照しているかどうかを判断します。

ttyname() 関数は、 isatty() が真であるファイル記述子に関連するデバイス名を取得します。

ttyslot() 関数は、 ttys(5) ファイルエントリから現在のプロセスの制御端末番号を取ってきます。

戻り値
ttyname() 関数は、デバイスが見つかって isatty() が真である場合は、null で終端された名前を返します。それ以外の場合は、 NULL ポインタを返します。

ttyslot() 関数は、デバイスファイルが見つかればそのユニット番号を 返します。見つからない場合は、値ゼロを返します。

ファイル
/dev/*
/etc/ttys

参照
ioctl(2), ttys(5)

歴史
isatty(), ttyname(), および ttyslot() 関数は、 AT&T UNIX に現れました。

バグ
ttyname() 関数は、その結果を内部静的オブジェクトの中に残し、その オブジェクトへのポインタを返します。それ以後に ttyname() を呼び出すと、その同じオブジェクトは修正されます。