Forum: Ruby TCPSocket.accept blocks signals on win32?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Shea M. (Guest)
on 2006-03-21 18:19
(Received via mailing list)
On Windows XP, ruby 1.8.4.

I have this

<code>
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
</code>

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
Mark V. (Guest)
on 2006-03-21 18:50
(Received via mailing list)
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.
Shea M. (Guest)
on 2006-03-21 19:49
(Received via mailing list)
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
Shea M. (Guest)
on 2006-03-21 20:13
(Received via mailing list)
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
Shea M. (Guest)
on 2006-03-21 20:23
(Received via mailing list)
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
Joel VanderWerf (Guest)
on 2006-03-21 20:43
(Received via mailing list)
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.
Shea M. (Guest)
on 2006-03-22 18:24
(Received via mailing list)
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.
This topic is locked and can not be replied to.