home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

C言語系/「デーモン君のソース探検」読書メモ/A04, isatty(3) (v1)

C言語系/「デーモン君のソース探検」読書メモ/A04, isatty(3) (v1)

C言語系 / 「デーモン君のソース探検」読書メモ / A04, isatty(3) (v1)
id: 576 所有者: msakamoto-sf    作成日: 2010-02-03 21:17:09
カテゴリ: BSD C言語 

お題:isatty(3)が端末上で動作しているか判定する仕組みを調査せよ

※この章は「デーモン君のソース探検」に載っていませんが、msakamoto-sf自身が個人的に興味を持って調べ、"Appendix"として読書メモシリーズに入れてありますのでご注意下さい。

ソースファイルの場所を把握:

$ locate isatty
/usr/share/man/cat3/isatty.0
/usr/share/man/man3/isatty.3
/usr/src/gnu/dist/libf2c/libU77/isatty_.c
/usr/src/gnu/dist/toolchain/libf2c/libU77/isatty_.c
/usr/src/lib/libc/gen/isatty.c

ソースコード:

int
isatty(fd)
        int fd;
{
        struct termios t;

        return(tcgetattr(fd, &t) != -1);
}

tcgetattr(3)のソースファイル:

$ locate tcgetattr
/usr/share/man/cat3/tcgetattr.0
/usr/share/man/man3/tcgetattr.3
/usr/src/lib/libc/termios/tcgetattr.c

ソースコード:

int
tcgetattr(fd, t)
        int fd;
        struct termios *t;
{

        _DIAGASSERT(t != NULL);

        return (ioctl(fd, TIOCGETA, t));
}

以上より、最終的にはioctl(2)を使ってデバイスドライバ経由で情報を取得出来れば端末上で動作していると判定していることが分かった。
今回のお題については、ここまで。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-02-03 21:18:04
md5:baac468bec0f2f7dc5dc828b62d96453
sha1:9528b958dabc4bbbef9349c7ed7094ae94d9e59b
コメント
コメントを投稿するにはログインして下さい。