2016-10-06 11 views
0

私は、INTやTERMのようなシグナルを受信するときに正常に終了しないライブラリを使用しています。私はそれらをトラップし、優雅に終了したいと思います。モンキーパッチ信号を外部モジュールに取り込むことは可能ですか?私のコードの信号トラッピングは正常に動作しますが、モジュールからのコードがアクティブである間にINTを呼び出すときには何の効果もありません。Ruby:シグナルハンドリングのためのモンキーパッチモジュール

答えて

0

モンキースキャニングでは、通常、名前空間にあるよりも多くの方法でメソッドを交換したり、ジャムしたりすることによって、ライブラリのコードを変更する必要があります。

シグナル処理はプロセスレベルで行われるため、それはあなたがモノスケッチできるものではありません。あなたができることは、必要なシグナルハンドラを追加し、コードが適切に応答するようにすることです。例えば

:あなたはまた、トップレベルでInterrupt例外が表示される場合があります

Signal.trap("INT") do 
    BustedLibrary.shutdown! 
    exit(0) 
end 

、他の事はあなたがキャッチして対処することができます。

0

シグナルはオブジェクトやモジュールではなくプロセスに影響を与えるため、シグナルをトラップするためにサードパーティのモジュールを修正する必要はありません。あなたのコードにトラップしてください。

関連する問題