[ruby-list:50810] Re: [質問] msys2 mingw64 ruby Signal.trap(:INT) が動作しない?
From:
yamataka@...08.itscom.net
Date:
2019-08-09 05:21:24 UTC
List:
ruby-list #50810
ren さん、 On Fri, 09 Aug 2019 14:09:21 +0900, ren kannagi wrote: > これも、以前の redebug でソースコードが表示されなかった問題と原因は一緒です。 今回も、 $stdout.sync = true を入れないと、 while true puts "とんで" sleep 3 end の、puts が表示されなかったので、ソースには、いれて表示するようになったのですが... Ctrl-c の割り込みまでは対応できずで質問しました。 > rubyの割り込みのソースを読んだわけではありませんが、 > おそらく Signal.trap(:INT) を動作させるためには、stdinがコンソールのハンドルである必要があるのだと思います。 > msys2 mingw64 のターミナル(mintty)で実行した場合には、stdin, stdout, stderr は msys2(cygwin) の pty をエミュレートするための pipe になっています。 > よって、ruby の Signal.trap(:INT) が動作しないのだと思います。 理解が深まりました。 > したがって、mintty 中で動作させるためには winpty を使用する必要があります。 > 手元では winpty を使用するとことで mintty 中でも Signal.trap(:INT) が動作します。 動作しました。 ご教示ありがとうございます。 作成中のスクリプト msys2 mingw64 上で動作させるのをあきらめようと思っていたので、 動作するようになり、大変うれしいです。 ご教示ありがとうございました。