TCPSocket.accept blocks signals on win32?


#1

On Windows XP, ruby 1.8.4.

I have this

LISTENER = TCPServer.new( HOST, PORT ) s = LISTENER.accept host_info = l_session.peeraddr name = "#{host_info[2]}@#{host_info[3]}" puts( "new connection from #{name}", 'debug' ) s.close

exit 0

Running the above script will block on the accept. Good. But I can’t
kill the process with CTRL-C, while it is accepting. Is this a win32
caveat? I tried trapping the INT signal, but it seems that the signal
does not even get sent, as my trap-block never gets called.

~S


#2

It is a mystery to me too. Sometimes I can break out of Ruby code
using Ctrl-C under Windows. Other times I need to use Ctrl-Break.


#3

Mark V. wrote:

It is a mystery to me too. Sometimes I can break out of Ruby code
using Ctrl-C under Windows. Other times I need to use Ctrl-Break.

What signal does CTRL-Break send? I can’t seem to trap it with ‘KILL’,
‘INT’, or ‘TERM’.

~S


#4

Mark V. wrote:

It is a mystery to me too. Sometimes I can break out of Ruby code
using Ctrl-C under Windows. Other times I need to use Ctrl-Break.

I didn’t know about ctrl-break. (I am not a windows guy). But if
ctrl-break works, that is good enough.

~S


#5

Shea M. wrote:

Mark V. wrote:

It is a mystery to me too. Sometimes I can break out of Ruby code
using Ctrl-C under Windows. Other times I need to use Ctrl-Break.

What signal does CTRL-Break send? I can’t seem to trap it with ‘KILL’,
‘INT’, or ‘TERM’.

If windows is like unix/linux, you can’t trap KILL, anyway. So maybe
Ctrl-Break is KILL.


#6

Shea M. wrote:

Mark V. wrote:

It is a mystery to me too. Sometimes I can break out of Ruby code
using Ctrl-C under Windows. Other times I need to use Ctrl-Break.

What signal does CTRL-Break send? I can’t seem to trap it with ‘KILL’,
‘INT’, or ‘TERM’.

Further:

Signal.list.each_key { | sig |
Kernel.trap( sig ) {
puts “caught #{sig}”
exit 1
}
}

sleep 30

exit 0

running this, then doing a Ctrl-Break, does not output anything, i.e.,
the signal is not trapped. Maybe it is not possible to trap break.

~S


#7

Joel VanderWerf wrote:

Shea M. wrote:

Mark V. wrote:

It is a mystery to me too. Sometimes I can break out of Ruby code
using Ctrl-C under Windows. Other times I need to use Ctrl-Break.
What signal does CTRL-Break send? I can’t seem to trap it with ‘KILL’,
‘INT’, or ‘TERM’.

If windows is like unix/linux, you can’t trap KILL, anyway. So maybe
Ctrl-Break is KILL.

Aah, yes.