| 総合手引 | セクション 4 | English | Deutsch | オプション |
ユーザが対話的にログインしたとき、システムはその回線をある様式 ( 回線制御規則 (line discipline) と呼ばれます) に従う動作をするように準備します。 回線制御規則の詳細は、コマンドレベルでは stty(1) に、プログラミングレベルでは termios(4) [英語] に解説がされています。 ユーザは独自のログイン端末に関する設定を変更しようと思うかもしれません。 そんなときは、先に挙げたほうのマニュアルページを 参照してよくある事例を調べるとよいでしょう。 本マニュアルページの残りでは、端末デバイスを低レベルで使用したり 制御したりする際の詳細について解説します。おそらく、 システムの提供する機能と似たものを提供しようとするプログラムでは 必要なことでしょう。
という記述があります。これは、 次のような部分コードを用いて ファイル記述子 0 に関連付けられた端末上で呼び出されるでしょう。
int ldisc;ldisc = TTYDISC; ioctl(0, TIOCSETD, &ldisc);
| TIOCSETDint, *ldisc | |
|
ldisc
が指す新しい回線規則に変更します。
利用可能な回線制御規則は
<sys/ttycom.h>
に列挙されています。現在は次のものが利用可能です:
| |
| TTYDISC | termios 対話的回線制御規則 |
| TABLDISC | タブレット回線制御規則 |
| SLIPDISC | シリアル IP 回線制御規則 |
| PPPDISC | PPP 回線制御規則 |
| TIOCGETDint, *ldisc | |
| ldisc の指す整数に現在の回線制御規則を返します。 | |
| TIOCSBRKvoid | |
| 端末ハードウェアをブレーク (BREAK) 条件に設定します。 | |
| TIOCCBRKvoid | |
| 端末ハードウェアのブレーク条件をクリアします。 | |
| TIOCSDTRvoid | |
| データ端末レディ (DTR) を有効にします。 | |
| TIOCCDTRvoid | |
| データ端末レディ (DTR) をクリアします。 | |
| TIOCGPGRPint, *tpgrp | |
| 端末が関連付けられている現在のプロセスグループを tpgrp の指す整数に返します。これは termios(4) [英語] の tcgetattr() 呼び出しを実装している下位の呼び出しです。 | |
| TIOCSPGRPint, *tpgrp | |
| tpgrp の指すプロセスグループ (整数) に端末を関連付けます。 これは termios(4) [英語] の tcsetattr() 呼び出しを実装している下位の呼び出しです。 | |
| TIOCGETAstruct, termios, *term | |
| デバイスが関連付けられている現在の termios 状態を term の指す termios 構造体に代入します。 これは termios(4) [英語] の tcgetattr() 呼び出しを実装している下位の呼び出しです。 | |
| TIOCSETAstruct, termios, *term | |
| デバイスに関連付けられている termios 状態を即座に設定します。 これは termios(4) [英語] の tcsetattr() に TCSANOW オプションを渡した場合の呼び出しを実装している下位の呼び出しです。 | |
| TIOCSETAWstruct, termios, *term | |
| まず出力がすべて完了するのを待ち、それからデバイスに関連付けられた termios 状態を設定します。 これは termios(4) [英語] の tcsetattr() に TCSADRAIN オプションを渡した場合の呼び出しを実装している下位の呼び出しです。 | |
| TIOCSETAFstruct, termios, *term | |
| まず出力がすべて完了するのを待ち、保留されている入力をクリアし、 それからデバイスに関連付けられた termios 状態を設定します。 これは termios(4) [英語] の tcsetattr() に TCSAFLUSH オプションを渡した場合の呼び出しを実装している下位の呼び出しです。 | |
| TIOCOUTQint, *num | |
| 現在の出力キューにある文字数を num の指す整数に代入します。 | |
| TIOCSTIchar, *cp | |
| タイピング入力をシミュレートします。端末が cp の指す文字入力を受けたかのように見せかけます。 | |
| TIOCNOTTYvoid | |
|
この呼び出しは時代遅れですが、互換性のために残されています。
以前は、制御端末 (
termios(4) [英語]
の
端末制御
セクションを参照) を持たないプロセスが最初に端末デバイスをオープンしたとき、
その端末をプロセスの制御端末として利用できました。
プログラムによっては最初は制御端末を必要としない場合もあるので、
これは危険なことでした。
そこでこの呼び出しは、プロセスから制御端末を切り離す機能を提供していたのです。
ファイル
/dev/tty
をオープンし、そのファイル記述子で
TIOCNOTTY
を呼び出さなければ
なりません。
現在のシステムでは、 open() 呼び出しにおいてプロセスに制御端末を割り当てるようなことはしません。 端末を制御端末にするための TIOSCTTY という特別な ioctl が存在します。 また、プログラム中で fork() を行い setsid() システムコールを呼び出して、プロセスを専用のセッションに置くこともできます。 そうするとプロセスを制御端末から切り離す効果があります。 プログラム中で制御端末を取り除くには、こちらが新しく、望ましい方法です。 | |
| TIOCSTOPvoid | |
| (キーボードから ^S を入力するように) 端末の出力を止めます。 | |
| TIOCSTARTvoid | |
| (キーボードから ^Q を入力するように) 端末の出力を開始します。 | |
| TIOCSCTTYvoid | |
| 端末をプロセスの制御端末にします (このときプロセスは制御端末を持っていてはいけません)。 | |
| TIOCDRAINvoid | |
| すべての出力が終わるまで待ちます。 | |
| TIOCEXCLvoid | |
| 端末を専有使用するよう設定します。 以後、root 以外がこの端末をオープンすることはできません。 もちろん、root によって実行された (あるいは setuid された) プログラムは この専有設定には従いません。 これによって、この機能の有用性が制限されることになります。 | |
| TIOCNXCLvoid | |
| 端末の専有使用を取り消します。 以後、この端末をオープンできるようになります。 | |
| TIOCFLUSHint, *what | |
| what の指す整数値が <sys/file.h> に定義されている FREAD ビットを含むなら、 入力キューにある文字はすべて消去されます。 FWRITE ビットを含むなら、 出力キューにある文字はすべて消去されます。 整数値が 0 なら、 FREAD ビットと FWRITE ビットの両方がセットされているかのように動作します (つまり両方のキューをクリアします)。 | |
| TIOCGWINSZstruct, winsize, *ws | |
| 端末に関連付けられたウィンドウのサイズ情報を ws の指す winsize 構造体に代入します。 ウィンドウサイズの構造体は、端末に接続されたデバイスの行数と桁数 (適切な場合にはピクセル数も) を保持します。 これはユーザソフトウェアによって設定され、 全画面指向のプログラムのほとんどがこの方法で画面サイズを決定します。 winsize 構造体は <sys/ioctl.h> に定義されています。 | |
| TIOCSWINSZstruct, winsize, *ws | |
| 端末に関連付けられたウィンドウのサイズを ws の指す winsize 構造体 (上記参照) 中の値に設定します。 | |
| TIOCCONSint, *on | |
| on が 0 以外の整数を指していれば、 カーネルコンソールの出力 (カーネルの printf 先) をこの端末にリダイレクトします。 on が整数 0 を指していれば、 カーネルコンソールの出力を通常のコンソールに戻します。 これは普通、ワークステーション上でカーネルメッセージを 特定のウィンドウにリダイレクトするのに使われます。 | |
| TIOCMSETint, *state | |
|
state
の指す整数は、モデムの状態に対応するビットを含みます。
次のリストは定義済み変数とそれが表すモデムの状態です:
| |
| TIOCM_LE | 回線利用可能 (Line Enable) |
| TIOCM_DTR | |
| データ端末レディ (Data Terminal Ready) | |
| TIOCM_RTS | |
| 送信要求 (Request To Send) | |
| TIOCM_ST | 従局送信 (Secondary Transmit) |
| TIOCM_SR | 従局受信 (Secondary Receive) |
| TIOCM_CTS | |
| 送信可 (Clear To Send) | |
| TIOCM_CAR | |
| キャリア検出 (Carrier Detect) | |
| TIOCM_CD | キャリア検出 (別称) |
| TIOCM_RNG | |
| 被呼表示 (Ring Indication) | |
| TIOCM_RI | 被呼表示 (別称) |
| TIOCM_DSR | |
| データセットレディ (Data Set Ready) | |
この呼び出しは、端末モデムを state の表す状態に設定します。 すべての端末がこの呼び出しをサポートしているとは限りません。
| TIOCMGETint, *state | |
| 上記のような端末モデム回線の現在の状態を state の指す整数に返します。 | |
| TIOCMBISint, *state | |
| state の指す整数が含むビットは、上記のようなモデムの状態を表しますが、 現在の状態との OR (和) が設定されます。 | |
| TIOCMBICint, *state | |
| state の指す整数が含むビットは、上記のようなモデムの状態を表しますが、 state 中でオンになっている各ビットを端末中でクリアします。 | |
| BSD 4 | TTY (4) | August 14, 1992 |
| 総合手引 | セクション 4 | English | Deutsch | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
| “ | C isn't that hard: void (*(*f[])())() defines f as an array of unspecified size, of pointers to functions that return pointers to functions that return void | ” |