0

を使用して Ctrl-C を処理できることを知っています

rescue Exception, or 

rescue SystemExit, or 

trap(0) or 

trap("SIGTERM") or 

trap("INT"), 

しかし、「X」ボタンをクリックしてコマンドプロンプトを閉じることによるブレークを処理したいのですが、システムの再起動や「X」ボタンのクリックなど、プログラムが異常終了したときに進行状況を記録する必要があります。次回のブレークポイント、

私はそれらすべてを試しましたが、どれもうまくいきませんでした。

何か提案はありましたか?出来ますか?

4

1 に答える 1

0

これを試して、

begin
  10.times do |second|
    @second = second
    sleep 1
  end
ensure
  File.open("/tmp/terminated.txt", 'w') do |f| 
    f.write("Process terminated after #{@second} second(s)")
  end
end

ブロック内のコードは、ensureプロセスが Ctrl-C またはターミナル ウィンドウを閉じることによって終了した場合でも、常に実行されます。

プロセスが終了していない場合にも実行されます。これは、ループが終了したかどうかを確認することで防ぐことができます。File.open(...) unless @second == 10

于 2013-03-11T10:15:20.073 に答える