module PTY

[edit]

要約

擬似端末(Pseudo tTY)を扱うモジュールです。

目次

特異メソッド
モジュール関数

特異メソッド

check(pid, raise = false) -> Process::Status | nil[permalink][rdoc][edit]

pid で指定された子プロセスの状態をチェックし、変化があれば変化したステータスを返します。実行中、あるいは変化なしであれば nil を返します。

状態が変化した後、その状態を取得することは一回しかできない(くりかえし check を呼んだら nil が返ってくる)ので注意してください。

状態が変化して、終了したか停止した場合、第二引数が偽であれば、対応する Process::Status オブジェクトを返します。

[PARAM] pid:
チェックしたい子プロセスの PID を指定します。
[PARAM] raise:
真を指定すると、子プロセスが終了または停止していた場合、例外 PTY::ChildExited が発生します。デフォルトは偽です。 (なお、バグにより、1.9.2 pXXX より古い ruby では、終了または停止していなくても、ただちに例外が発生します)
open -> [IO, File][permalink][rdoc][edit]
open {|master_io, slave_file| ... } -> object

仮想 tty を確保し、マスター側に対応する IO オブジェクトとスレーブ側に対応する File オブジェクトの配列を返します。

ブロック付きで呼び出された場合は、これらの要素はブロックパラメータとして渡され、ブロックから返された結果を返します。また、このマスター IO とスレーブ File は、ブロックを抜けるときにクローズ済みでなければクローズされます。

モジュール関数

getpty(command) -> [IO, IO, Integer][permalink][rdoc][edit]
getpty(command) {|read, write, pid| ... } -> nil
spawn(command) -> [IO, IO, Integer]
spawn(command) {|read, write, pid| ... } -> nil

擬似 tty を確保し、指定されたコマンドをその擬似 tty の向こうで実行し、配列を返します。

プラットフォームに依存しますが、対応していれば、作られたプロセスはセッションリーダーになり、その制御端末は作成された擬似 tty に設定されます。

[PARAM] command:
擬似 tty 上で実行するコマンド
[RETURN]
返値は3つの要素からなる配列です。最初の要素は擬似 tty から読み出すための IO オブジェクト、2番目の要素は書きこむための IO オブジェクト、 3番目の要素は子プロセスのプロセス ID です。このメソッドがブロック付き呼ばれた場合、これらの要素はブロックパラメータとして渡され、メソッド自体は nil を返します。

[SEE_ALSO] Kernel.#spawn, Kernel.#system, IO.popen, signal(2)