From: bjornms@... Date: 2007-04-20T01:15:08+09:00 Subject: getting keyboard input with ruby while forking mplayer. Hi I'm trying to create a simple ruby script, which forks mplayer and afterwards it stays in a while loop which blocks on gets (this is to get keyboard input). I start this script from a terminal (linux). When i start it, it forks mplayer and the focus is on mplayer now. If i press some keys on my keyboard these are send to mplayer. Is there a solution to get focus on the terminal/script again (without user interaction) after i started mplayer? Or another solution to get keyboard commands into my script? For some more information i included my program. The client is the one i'm talking about. The server sends the data via netcat to the client. It is the beginning of something you might call a pvr (personal video recorder). Thanks in advance, By the way this is my first ruby program (used to program c++/c#) == pvr_client.rb == #!/usr/bin/ruby -w require 'soap/rpc/driver' class UI def initialize @driver = SOAP::RPC::Driver.new('http://localhost:8888/', 'urn:mySoapServer') @driver.add_method('startstream', 'toip'); fork do exec('nc -l -p 5000 | mplayer -') end @driver.startstream('hoi') end def getInput while( command = gets ) do puts command end end end ui = UI.new ui.getInput == pvr_server.rb == #!/usr/bin/ruby -w require 'soap/rpc/standaloneServer' class MyServer < SOAP::RPC::StandaloneServer def initialize(*args) super add_method(self, 'startstream', 'toip'); end def startstream(toip) fork do puts 'start streaming' exec('cat piet.mpg | nc localhost 5000') end end end server = MyServer.new('CoolServer', 'urn:mySoapServer', 'localhost', 8888) trap('INT') { server.shutdown } server.start