IO.popen呼び出しを含むRubyスクリプトがあります。私はCTRL + C(私はkill -2 #{popen_pid}
を呼び出す私につながるSignal.trap("SIGINT")
を使用して)とpopenコールをキャンセルすることができます。これはうまく動作し、CTRL + Cを押すと、kill -2
はpopenプロセスが何らかのクリーンアップを実行して終了します。RubyでCtrl + Cをエミュレートするには?
私の問題:私は、popenプロセスが時間がかかりすぎると、同じような動作をしたいと思っています。ただし、CTRL + Cの動作をエミュレートすることはできません。 rubyスクリプトのpidにProcess.kill
を使用すると、クリーンアップが行われずにすべてが終了し、popenプロセスでProcess.kill
を実行すると何も起こりません。私は直接ルックアップスクリプトを使ってシェルにアクセスしようとしましたが、rubyスクリプトのpidとpopenのpidにkill -2
を呼び出してみましたが、どちらもしません。
誰か提案はありますか?
これはpopen呼び出しを停止する際に機能しますが、基本的に-9シグナルで呼び出します。プロセスが内部クリーンアップを実行する必要があるため、-2が必要です... – ldanielw1