Hi all,

I'm looking  around MacRuby to find a way to run a subprocess and monitor
it, here is what I tried:

NSTask:

framework "foundation"
task = NSTask.launchedTaskWithLaunchPath("/bin/ls", arguments:"-l")
p task.isRunning
p task.standardOutput

=> Segmentation fault

Open4:

require 'rubygems'
require 'popen4'
status = POpen4::popen4('irb') { |stdout,stderr,stdin,pid|
  stdin.puts "a = 1"
  stdin.puts "a == 1"
  stdin.close
  puts "pid: #{pid}"
  puts "stdout: #{stdout.read.strip}"
  puts "stderr: #{stderr.read.strip}"
}
puts "status: #{status.inspect}"
puts "exitstatus: #{status.exitstatus}"

=> 
/Library/Frameworks/MacRuby.framework/Versions/0.7/usr/lib/ruby/Gems/1.9.2/gems/open4-1.0.1/lib/open4.rb:15:in
`open4:': fork() function is unimplemented on this machine
(NotImplementedError)
from
/Library/Frameworks/MacRuby.framework/Versions/0.7/usr/lib/ruby/Gems/1.9.2/gems/POpen4-0.1.4/lib/popen4.rb:75:in
`popen4:'
from
/Users/lpperron/Documents/lllaptop/git_repos/Redis/testResque/testOpen4.rb:3:in
`<main>'

Open3:

require 'open3'
puts "starting..."
Open3.popen3('irb') { |stdin,stdout,stderr|
  stdin.puts "a = 1"
  stdin.puts "a == 1"
  stdin.close

  puts "stdout: #{stdout.read.strip}"
  puts "stderr: #{stderr.read.strip}"
}

=> starting...

So...  NSTask segfaults...  Open4 cannot work because of unimplemented
'fork' in MacRuby and Open3 hangs?
Anybody has an other solution to launch and monitor a subprocess?

Thanks!

L-P
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to