TCPSocket.accept blocks signals on win32?

S

Shea Martin

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
 
M

Mark Volkmann

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.

On Windows XP, ruby 1.8.4.

I have this

<code>
LISTENER =3D TCPServer.new( HOST, PORT )
s =3D LISTENER.accept
host_info =3D l_session.peeraddr
name =3D "#{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
 
S

Shea Martin

Mark said:
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
 
S

Shea Martin

Mark said:
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
 
S

Shea Martin

Shea said:
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
 
J

Joel VanderWerf

Shea said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,731
Messages
2,569,432
Members
44,832
Latest member
GlennSmall

Latest Threads

Top