rubyスクリプトでは、次のように、それぞれがシェルマネージャーオブジェクトによって管理される仮想シェルをさらに開始します。
@shell = PTY.spawn 'env PS1="\w>" TERM=dumb COLUMNS=63 LINES=21 sh -i'
後で、このインスタンスを破棄し、関連するシェルプロセスを強制終了したいと思います。悲しいことに、私は何も正しく動作させることができません。動作する確率の順に、私が試したことは次のとおりです。
- 何もありません。つまり、管理オブジェクトが破棄されたときにシェルプロシージャが閉じられることを期待していません。
- killコマンドを使用してシェルで実行されているすべてのプロセスを強制終了し(これは機能します)、次に。を使用してシェル自体を強制終了し
system("kill #{@shell[2]")
ます。これは効果がありません。 - 上記で-9を使用します。これにより、シェルプロセスが機能しなくなります。
rubyプログラムが終了するとすべてのシェルが閉じられますが、プログラムを実行したままシェルを強制終了したいと思います。誰かが以前にこのようなものに遭遇しましたか?