| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gauche.termios - Termios このモジュールは端末の属性を制御する POSIX termios インタフェースを 定義しています。さらに、このモジュールでは、システムが提供している場合には 擬似 tty のインタフェースも提供しています。
POSIX termios(7) の構造体です。
iflag、oflag、cflag、lflagの各スロットは、
対応するビットマスクを非負の整数で表現した値を保持しています。
また、ccスロットはstruct termiosのc_cc配列の
コピーを返します。
c_cc配列の値を変えたい場合は、変更したu8vectorを明示的に
ccスロットにset!して下さい。
このセクションを通じて、引数 port-or-fd はポートオブジェクトか
システムのファイルディスクリプタを表現する小さい整数かのどちらかです。
portがシステム端末に結びついていないければ、エラーになります。
(sys-isatty?を使えばportが端末と結びついているか
どうかチェックできます。 他のファイル操作参照)
port-or-fd と結びついている <sys-termios>オブジェクトの
端末パラメータを返します。
port-or-fdと結びついている端末のパラメータを termios に設定します。
termios は <sys-termios> のインスタンスでなければなりません。
整数の引数whenはいつ変更を有効にするかを指定します。 この引数用に3つの変数があらかじめ定義されています。
TCSANOW変更を直ちに反映します。
TCSADRAIN変更を、すべてのペンディングになっている出力がフラッシュされた後に反映します。
TCSAFLUSH変更を、すべてのペンディングになっている出力がフラッシュされ、かつ、 すべてのペンディングになっている入力が破棄されたあとに反映します。
ゼロストリームを指定した時間、port-or-fdと結びついている端末に 送出します。時間の単位はシステム依存です。詳しくは、お使いの システムのマニュアルページ tcsendbreak(3)を参照してください。
port-or-fdへのすべての出力が送出されるまで待ちます。
port-or-fdのバッファ内のデータを破棄します。queueには以下の値の どれかを指定します。
TCIFLUSH受信データしたが読み込んではいないデータを破棄します。
TCOFLUSH書き出したが送出していないデータを破棄します。
TCIOFLUSHTCIFLUSH と TCOFLUSH の両方の動作をします。
port-or-fdのデータフローをactionで制御します。actionは 以下の値のうちどれかです。
TCOOFF出力の送出をサスペンドします。
TCOON出力の送出を再開します。
TCIOFF端末デバイスがシステムへの送出を止めるよう STOP 文字を送出する。
TCION端末デバイスがシステムへの送出を再開するよう START 文字を送出する。
port-or-fdの結びついている端末のプロセスのグループIDを返します。
port-or-fdの結びついている端末のプロセスのグループIDをpgrpに 設定します。
termios内の入出力スピード(ボーレート)を取得/設定します。スピードは
以下の定義ずみの数値で表現されてます:
B0、B50、B75、B110、B134、
B150、B200、B300、B600、B1200、
B1800、B2400、B4800、B9600、
B19200、B38400。
もっと速いボーレート、たとえば、B57600、
B115200 あるいは B230400 をサポートしている
システムもあります。symbol-bound?をつかえば、これらの
オプションが定義されているかどうかをチェックできます。B0
はコネクションを終了するのに使われます。
擬似 tty のペア、マスターとスレーブをオープンし、2つの
ファイルディスクリプタの整数を返します。オプション引数 term
が渡される場合は、<sys-termios>オブジェクトでなければなりません。
これは、pty パラメータを設定します。
open-input-fd-portとopen-output-fd-portの両方またはどちらか
を返されたファイルディスクリプタに対するポートを生成するために使うことが
できます(ファイルポート参照)。擬似端末の名前を得るには sys-ttyname
を使います(他のファイル操作参照)。
この関数はシステムが openpty(3) をサポートしている場合にのみ利用
可能です。
擬似 ttyのペア、マスターとスレーブをオープンし、スレーブ sty を ログイン端末になるよう設定し、fork(2) します。
二つの整数、最初の値は親プロセスに対しては子の pid の値で、0ならば 子プロセスです。ふたつ目の値はマスター pty のファイルディスクリプタの 値です。
オプション引数 termが渡される場合は、それは<sys-termios>オブジェクト
でなければなりません。これはスレーブ pty のパラメータを設定します。
この関数はシステムが forkpty(3) をサポートしている場合にのみ利用
可能です。
注意: sys-forkptyにはsys-forkと同様のマルチスレッドハザー
ドの危険性があります。(詳細についてはUnixのプロセス管理参照
してください)。マルチスレッドプログラムでは後述の
sys-forkpty-and-execを利用してください。
sys-forkptyして、ただちに指定したcommandを引数
argsで子プロセスでexecします。この関数にはマルチスレッド
環境でもハザードを起こしません。
引数command、args、iomap、sigmaskの意味は
sys-execのものと同じです。(Unixのプロセス管理を見て
ください)。キーワード引数termが与えられれば、スレーブptyの初期化
に使われます。
以下の例は、ユーザからのパスワードをエコーなしで取得する方法を示しています。
(use gauche.termios)
(define (get-password prompt)
(let* ((port (current-input-port))
(attr (sys-tcgetattr port))
(lflag (slot-ref attr 'lflag)))
;; Show prompt
(display prompt)
(flush)
;; Turn off echo during reading.
(dynamic-wind
(lambda ()
(slot-set! attr 'lflag (logand lflag (lognot ECHO)))
(sys-tcsetattr port TCSAFLUSH attr))
(lambda ()
(read-line port))
(lambda ()
(slot-set! attr 'lflag lflag)
(sys-tcsetattr port TCSANOW attr)))))
|
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated by Shiro Kawai on October, 7 2008 using texi2html 1.78.