From: Matthew Bloch Date: 2003-01-03T17:14:22+09:00 Subject: Re: Basic UNIXSocketDGram implementation On Friday 03 January 2003 00:28, Matthew Bloch wrote: [snip] > This only seems to happen when trying to talk to a UNIX socket which is > being handled by a hung User-Mode Linux process: my question is, I suppose, > whether I can do anything in Ruby to avert this hanging / blocking effect, > or whether I can detect that it might happen before calling send on the > socket. Please excuse me, I'm not sure how I managed to make setting non-blocking mode on the socket sound like such an alien concept, or indeed that it was much to do with Ruby specifically. For the record and future internet searchers, the code now looks like this which will raise Errno::EWOULDBLOCK in such an event: @proxy = Socket.new(Socket::AF_UNIX, Socket::SOCK_DGRAM, 0) @proxy.bind(sockaddr_struct_un(path)) flags = @proxy.fcntl(3) # F_GETFL flags |= File::NONBLOCK @proxy.fcntl(4, flags) # F_SETFL @path = path I'm still keen to know if anyone has done a less grotty implementation of UNIX datagram sockets though. -- Matthew > http://www.soup-kitchen.net/ > ICQ 19482073 > AIM MattbeeUK