pty 拡張モジュール version 0.3 by A.ito 1. はじめに この拡張モジュールは,仮想tty (pty) を通して適当なコマンドを 実行する機能を ruby に提供します. 2. インストール 次のようにしてインストールしてください. (1) ruby extconf.rb を実行すると Makefile が生成されます. (2) make; make install を実行してください. 3. 何ができるか この拡張モジュールは,PTY というモジュールを定義します.その中 には,次のようなモジュール関数が含まれています. getpty(command) spawn(command) この関数は,仮想ttyを確保し,指定されたコマンドをその仮想tty の向こうで実行し,配列を返します.戻り値は3つの要素からなる 配列です.最初の要素は仮想ttyから読み出すためのIOオブジェクト, 2番目は書きこむためのIOオブジェクト,3番目は子プロセスのプロ セスIDです.この関数がイテレータとして呼ばれた場合,これらの 要素はブロックパラメータとして渡され,関数自体はnilを返します. 子プロセスが終了したり停止した場合には,例外が発生します.この関 数がブロックパラメータ付きで呼ばれた場合には,そのブロックの中で のみ例外が発生します.子プロセスをモニターしているスレッドはブロッ クを抜けるときに終了します. protect_signal reset_signal 廃止予定です. PTY.open 仮想ttyを確保し,マスター側に対応するIOオブジェクトとスレーブ側に 対応するFileオブジェクトの配列を返します.ブロック付きで呼び出さ れた場合は,これらの要素はブロックパラメータとして渡され,ブロッ クから返された結果を返します.また、このマスターIOとスレーブFile は、ブロックを抜けるときにクローズ済みでなければクローズされます. PTY.check(pid[, raise=false]) pidで指定された子プロセスの状態をチェックし,実行中であればnilを 返します.終了しているか停止している場合、第二引数が偽であれば、 対応するProcess::Statusオブジェクトを返します。真であれば PTY::ChildExited例外が発生します. 4. 利用について 伊藤彰則が著作権を保有します. ソースプログラムまたはドキュメントに元の著作権表示が改変されずに 表示されている場合に限り,誰でも,このソフトウェアを無償かつ著作 権者に無断で利用・配布・改変できます.利用目的は限定されていませ ん. このプログラムの利用・配布その他このプログラムに関係する行為によ って生じたいかなる損害に対しても,作者は一切責任を負いません. 5. バグ報告等 バグレポートは歓迎します. aito@ei5sun.yz.yamagata-u.ac.jp まで電子メールでバグレポートをお送りください.