[MacRuby-devel] MacRuby with Subprocesses

Matt Aimonetti mattaimonetti at gmail.com
Wed Nov 3 09:00:18 PDT 2010


NSTask is the way to go, I used it in many cases, including some examples in my O'Reilly book:
http://macruby.labs.oreilly.com/ch04.html#_tasks_subprocesses

You can also look at this more complex example:

https://github.com/mattetti/couchdbx-app/tree/master/macruby_version/CouchDBX/

The wrappers might be interesting to look at to see how I'm hiding some of the complexity.

- Matt

Sent from my iPhone

On Nov 3, 2010, at 7:31, Louis-Philippe <default at spiralix.org> wrote:

> 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 at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel


More information about the MacRuby-devel mailing list