[prev in list] [next in list] [prev in thread] [next in thread]
List: ruby-talk
Subject: Re: Two way communication with the command shell (IO.popen?)
From: ara.t.howard () noaa ! gov
Date: 2006-11-08 14:33:06
Message-ID: Pine.LNX.4.62.0611080725020.10204 () harp ! ngdc ! noaa ! gov
[Download RAW message or body]
On Wed, 8 Nov 2006, James Smith wrote:
> Thank you very much for your comments. I am basically writing a web
> application where users can write and save ruby programs; then run them on
> the server. I am at the stage where the user can save their programs onto
> the server, however i now need to be able to input and recieve output from
> them, as well as error messages. I am fairly certain i will need to create a
> new thread for each of these processes, and probably have a timeout on each
> of them.
ah. you really need to do be able to do this then
> Any help on this would be very much appreciated. Are there any sources that
> you'd recommend me looking at?
sure, i think this already does everything you need:
harp:~ > cat a.rb
require 'open4'
def gen_ruby_program path = 'b.rb'
open path, 'w' do |f|
f.write <<-src
puts "what's your name?"
name = gets
puts("hi %s!" % name)
src
end
path
end
program = gen_ruby_program
stdin, stdout, stderr = "zaphod", "", ""
timeout = 42
status =
open4.spawn "ruby #{ program }", :stdin=>stdin, :stdout=>stdout, :stderr=>stderr, :timeout=>timeout
puts "status: #{ status.inspect }"
puts "stdout: #{ stdout.inspect }"
puts "stderr: #{ stderr.inspect }"
harp:~ > ruby a.rb
status: #<Process::Status: pid=8456,exited(0)>
stdout: "what's your name?\nhi zaphod!\n"
stderr: ""
if you are on windows you'll want to use systemu instead of open4.
-a
--
my religion is very simple. my religion is kindness. -- the dalai lama
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic