次のページ 前のページ 目次へ

6. /dev/tty のような端末スペシャルファイル

``tty'' は ``テレタイプ (Teletype)'' の略語です。初期の端末はテレタイ プ (遠隔制御のタイプライタのようなもの) でした 。 テレタイプをご覧ください。``Linux'' のデバイスリ スト (/dev ディレクトリの中にあるもの) は、カーネルソースと共に含まれ る ``Linux Allocated Devices'' で見つけることができるでしょう。そこに は各デバイスの用途が一言か二言で ``記述'' されていますが、使い方には触 れていません。

6.1 シリアルポート端末

コンピュータは各シリアルポートを ``デバイス'' だと考えます。時々、端末 デバイスと呼んだりするのは、ひと頃、シリアルポートの一般的用途が端末だ ったからです。そのようなシリアルポートのために、/dev (device) ディレク トリにスペシャルファイルがあります。/dev/ttyS0 は、DOS/Windows で COM1 として知られるシリアルポート用のスペシャルファイルです。端末にテキス トを送るには、コマンドラインでのコマンドの標準出力を特定のスペシャルフ ァイルにリダイレクトしてやればよいでしょう。例えば、コマンドプロンプト で ``echo test > /dev/ttyS1'' とタイプすれば、ttyS1 (COM2) につながる 端末に ``test'' が送られます。/dev/ttyS1 にライトパーミッションを与え ておきましょう。同様に、``cat my_file > /dev/ttyS0'' とタイプすれば、 my_file の内容が COM1 (ttyS0) に送られます。

ttyS0 (/dev/ttyS0), ttyS1, ttyS2 等 (``S'' はシリアルポートを表わす) に加えて、cua0, cua1, cua2等の ``cua'' シリーズがあります。cua0 は ttyS0 と同じポートです。 cua の ``cu'' は CalloUt を表します。ttyS シリー ズは Posix 準拠ですが、cua はモデム制御ラインがレディじゃなくてもポー トのオープンを許しています。カーネルの 2.2 版の cua はすでに廃れかけて いて、それを使おうとすると警告メッセージが発せられるでしょう (まだ動き はしますが)。過去数年間、後ろ向きの互換性のためにのみ Linux に含まれて いるのです。プログラマは ttyS が cua と同じように働くようアレンジでき るので、cua はまったく必要なくなりました。

6.2 擬似端末

擬似端末はコンピュータと物理的に接続したものではありません。それはシリ アルポートをエミュレートするために使われます。IO アドレスも IRQ もあり ません。例えば、誰かがネットワーク越しに telnet で接続してきたなら、 /dev/ptyp2 (擬似端末) にたどり着くでしょう。X-Windows では、端末エミ ュレータである xterm (か、rxvt) が擬似端末を使います。 Linux でのアマ チェア無線プログラムにもそれを使います。あるアプリケーションソフトウェ アを使っていて、物理的に同じシリアルポートに接続した 2 つ以上の擬似端 末を使うこともできます。

擬似端末は ttyp3 と ptyp3 のようなペアとなります。pty... はマスタもし くは端末の制御を行ない、tty... はスレーブとなります。ttyq5 も ttysc (c は 16 進の値) のような擬似端末です。より正確に言うと、擬似マスタ端末 は /dev/pty[p-s]N で、対応するスレーブのほうは /dev/tty[p-s]N となり,N は 16 進で 0-f の値をとります。スレー ブの /dev/ttyp はアプリケーションプログラムがそれに対して読み書きでき るシリアルポートのように見えます。しかし、アプリケーションプログラムは、 対応するマスタ /dev/pty に書いたり、読んだりするいかなるプログラムとも 本当に通信しているのです。このように、マスタとスレーブは実は同じポート なんですが、一つはアプリケーションプログラムが使い、もう一つは、``ポー ト'' へデータを与えたり、ポートから取得したりするネットワークプログラ ム (あるいは、同等のもの) が使います。

Unix98 では上記のものを使用せず、代わりに /dev/ptmx と呼ぶ ``pty master'' を使います。要求に応じて pty を供給します。他のプログラムで擬似端 末を使うための詳細は、man ページに幾つかありますが、もっぱら Linux に 必要なものが載っています。その他の unix ライクなシステムの man ページ には ``pty - 擬似端末ドライバ'' の名称で載っています。

6.3 制御端末 /dev/tty

/dev/tty はカレントプロセス (もしあれば) の制御端末です。どのプロセス がどの tty にアタッチしているかは、シェルプロンプト (コマンドライン) で ``ps -a'' を使えばわかります。``tty'' の列をご覧ください。ログイン しているシェルプロセスでは、/dev/tty が現在使用中の端末です。それが何 かを調べるには ``tty'' とタイプすればよいのです (man ページの tty(1) を参照してください)。/dev/tty は、C プログラマのために幾つかの特徴を併 せ持つ本当の端末デバイス名へのリンクのようなものです。man ページの tty(4) をご覧ください。

6.4 /dev/ttyIN ``端末''

N は 整数値です。Linux での使用例の一つに ISDN ドライバパッケージ isdn4linux があります。ttyIN は ttySN のようなものです。cuaN のような cuiN もあります。ttyI と cui はモデムをエミュレートし、モデムのコマンドも 与えられます。

6.5 コンソール /dev/ttyN

Linux で PC モニタのことを普通はコンソールと呼び、tty0, tty1, tty2 等 に関連づけられた数種類のデバイススペシャルファイルがあります。ログイン したときは tty1 になります。tty2 (同じ画面上) から tty3 に移るのは、例 えば tty3 なら左側の Alt-F3 を押します。これら (tty1, tty2, tty3) を ` `仮想端末'' と呼んでいます。tty0 はカレント仮想端末のエイリアスで、シ ステムからメッセージが送られます。このように、システムメッセージは表示 中の仮想端末にかかわらず、コンソール (モニタ) で見ることができるでしょ う。

訳注:右側の ALT キーと Fn キーでは、仮想端末の切り替えはできません。

異なる仮想端末にログインし、コンピュータと異なるセッションを同時に張る ことができます。システムか root ユーザだけが、時に /dev/console として リンクされる /dev/tty0 に書きこみできるでしょう。コンソールに関するよ り多くの情報は Linux コンソールをご覧ください。

6.6 ``mknod'' でデバイスを作成する

/dev ディレクトリは多くのデバイススペシャルファイルを供給します。もし 必要なものがそこになければ、``mknod'' コマンドで作成することができます。 シリアルポート用スペシャルファイル作成方法は man ページの ttys(4) をご 覧ください。 mknod を使うにはメジャー及びマイナーデバイス番号について 知っていなければなりません。/dev ディレクトリで ``ls -l'' コマンドを使 えば、必要な番号を推察できるかもしれません。それは既存のスペシャルファ イルのメジャー、マイナー番号を画面表示できるからです。


次のページ 前のページ 目次へ