プログラムがrubyPTYライブラリを使用してPTYセッションを起動PTY.spawn
し、spawnメソッドから提供された入力変数と出力変数を使用して入力と出力をフィードするシステムを作成しようとしています。生成されたプロセスファイル自体がSTDINから読み取り、STDINに書き込みを行うため、このアプローチでは、生成されたファイルからの入力ストリームと出力ストリームが効果的にハイジャックされます。これは今のところうまく機能しています。
ただし、PTYインスタンスとの通信を再開できるように、親ファイルを閉じて、ptsファイルパス(spawnコマンドが呼び出されたときに確立するパス)を追跡しようとしています。と呼ばれるptsファイルがあり/dev/pts/17
、それとの通信を再開したい場合は、次のように入力と出力用のファイルハンドルを作成します。
io_file = '/dev/pts/17'
output = File.open(io_file, "r")
input = File.open(io_file, "w")
出力ファイルから読み込もうとすると、問題が発生します。私が行うたびにoutput.readline
、プロセスがハングします(ブロック)。私にはこれを回避する方法がありません。何が起こっているのか分かりますか?PTYインスタンスを再開する別の方法はありますか?