[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gauche.termios
- 端末の制御 このモジュールは端末の制御のための手続きを提供します。 端末制御APIはPOSIXとWindowsであまりに異なり、 十分に細かい制御ができる統一したインタフェースを作るのは不可能です。 そこで、これら二つのプラットフォームで異なる低レベルAPIを提供し、 その上に若干の共通な高レベルAPIを構築しています。
Unix環境では、低レベルAPIはモジュール名からわかるように POSIX termiosへのインタフェースを提供しています。 さらに、このモジュールでは、システムがサポートしている場合には 擬似 tty のインタフェースも提供しています。
Windowsネイティブ環境では、低レベルはWindowsコンソールAPIに対応します。
9.21.1 POSIX termiosインタフェース | ||
9.21.2 WindowsコンソールAPI | ||
9.21.3 共通の高レベル端末制御 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ここに挙げる手続きは、機能シンボルgauche.os.windows
が定義されていない
場合にのみ利用可能です。機能シンボルによってコードを切り替える方法は
srfi-0
- 機能条件式のcond-expand
を参照してください。
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
書き出したが送出していないデータを破棄します。
TCIOFLUSH
TCIFLUSH
と 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
と同様のマルチスレッドハザー
ドの危険性があります。(詳細についてはプロセス管理参照
してください)。マルチスレッドプログラムでは後述の
sys-forkpty-and-exec
を利用してください。
sys-forkpty
して、ただちに指定したcommandを引数
argsで子プロセスでexec
します。この関数にはマルチスレッド
環境でもハザードを起こしません。
引数command、args、iomap、sigmaskの意味は
sys-exec
のものと同じです。(プロセス管理を見て
ください)。キーワード引数termが与えられれば、スレーブptyの初期化
に使われます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ここに挙げる手続きは、機能シンボルgauche.os.windows
が定義されている
場合にのみ利用可能です。機能シンボルによってコードを切り替える方法は
srfi-0
- 機能条件式のcond-expand
を参照してください。
Most of the procedures correspond to Windows Console API one-to-one. See the Windows reference for the detail description of what each API does.
[Windows]
Calls AllocConsole
and FreeConsole
, respectively.
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[Windows]
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Currently we only have one high-level API. We may add more as needed.
If iport is an input port connected to a terminal,
sets the terminal mode non-echoing and call proc with
iport as an argument. Before returning from
without-echoing
, or throwing an error,
the terminal mode is reset to the original state when this
procedure is called. The procedure returns whatever value(s)
proc returns.
You can also pass #f
to iport. In that case,
this procedure tries to open a console (/dev/tty
on Unix,
CON
on Windows) and set the console mode, then calls
proc with the opened input port. An error is thrown
if the procedure can not open a console.
If iport is other than above, this procedure simply calls proc with iport. This allows the caller to read password from redirected input, for example.
Note: Because of an implementation issue, on Windows native
platforms this procedure always changes console mode
of the standard input handle when iport
is either
#f
or a terminal input port.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.