タグ

ptyに関するclavierのブックマーク (2)

  • Rubyで別のコマンドをラップしたい時、ptyライブラリが便利 - ローファイ日記

    library pty (Ruby 2.2.0) pty とは、擬似端末(Pseudo tTY)を扱うライブラリ。 典型的には以下のように使う。 require 'pty' status = nil PTY.spawn("for i in $(seq 1 10); do echo progress $i; sleep 1; done") do |pty_out, pty_in, pid| pty_in.close while l = pty_out.gets puts "PTY: #{l}" end status = PTY.check pid end # PTY: progress 1 # PTY: progress 2 # PTY: progress 3 # ... # PTY: progress 10 #=> nil p status #=> #<Process::Status: p

    Rubyで別のコマンドをラップしたい時、ptyライブラリが便利 - ローファイ日記
  • PTY を使ってシェルの入出力を好きなようにする - Hibariya

    あるプログラム (例えばシェル) を実行して、その入出力を好きなようにしたいことがある。 次のようなことができればいい。 入出力を検知して任意の処理ができる。 入出力は行単位ではなく文字単位くらいの細かさ (改行を待たない)。 普通の文字だけでなくその間に挟まっているエスケープシーケンスも取得できる。 Ctrl+C のような特殊文字が送られた場合もそれを検知できる。 既存のもので例えるなら script(1) にできることに近い。 こんなふうに入出力を好きにできれば、キーを入力するたびに「音を鳴らしたり」とか「ターミナルの様子を遠くの誰かとありのまま共有したり」とか、そういったことができて嬉しい。簡単なターミナルマルチプレクサも実装できたりしないかな。 上で箇条書きしたようなことは子プロセスに新たな端末を割り当てることによって実現できる。 子プロセスに割り当てた端末を親プロセスに監視させる

  • 1