From: ara.t.howard@... Date: 2007-04-20T00:04:37+09:00 Subject: Re: Executing program from ruby On Thu, 19 Apr 2007, Marcin Raczkowski wrote: > Hello i know there are several ways to execute from within ruby > but each one have their own problems: > > `` doesn't check if command /programm runs at all!, also it blocks untill > command returns, no bi-directional comunication > popen2,3,4 doesn't check if command exists at all ... it's not rising any > errors ... and happilly continues to run untill you try to write something to > pipe that leads to program that never even started > > only system() checks if command runs but it also returns false when programs > starts but returns anything other then 0 > > does anyone know good way to check if command exists then run it, return pid > for monitoring purposes and allow bidirectional comunication, then check exit > status ? > > open4 comes close to fulfilling all that but it doesn't rise (sample program > that tells you it'll doesn't eaither), ?? harp:~ > ruby -r open4 -e' Open4.popen4 "no-exist" ' /home/ahoward//lib/ruby/site_ruby/1.8/open4.rb:37:in `exec': No such file or directory - no-exist (Errno::ENOENT) from /home/ahoward//lib/ruby/site_ruby/1.8/open4.rb:37:in `popen4' from /home/ahoward//lib/ruby/site_ruby/1.8/open4.rb:21:in `popen4' from -e:1 harp:~ > ruby -r open4 -e' Open4.spawn "no-exist" ' /home/ahoward//lib/ruby/site_ruby/1.8/open4.rb:37:in `exec': No such file or directory - no-exist (Errno::ENOENT) from /home/ahoward//lib/ruby/site_ruby/1.8/open4.rb:37:in `popen4' from /home/ahoward//lib/ruby/site_ruby/1.8/open4.rb:21:in `popen4' from /home/ahoward//lib/ruby/site_ruby/1.8/open4.rb:273:in `spawn' from /home/ahoward//lib/ruby/1.8/timeout.rb:38:in `timeout' from /home/ahoward//lib/ruby/site_ruby/1.8/open4.rb:272:in `spawn' from -e:1 from the dist harp:open4-0.9.3 > pwd /home/ahoward/eg/ruby/open4/open4-0.9.3 harp:open4-0.9.3 > cat sample/exception.rb require "open4" Open4::popen4 "noexist" harp:open4-0.9.3 > ruby sample/exception.rb /home/ahoward/nfs//lib/ruby/site_ruby/1.8/open4.rb:37:in `exec': No such file or directory - noexist (Errno::ENOENT) from /home/ahoward/nfs//lib/ruby/site_ruby/1.8/open4.rb:37:in `popen4' from /home/ahoward/nfs//lib/ruby/site_ruby/1.8/open4.rb:21:in `fork' from /home/ahoward/nfs//lib/ruby/site_ruby/1.8/open4.rb:21:in `popen4' from sample/exception.rb:3 can you show an exampe which does not work? > not to mention compleate lack of > documentation. ?? http://codeforpeople.com/lib/ruby/open4/open4-0.9.3/README this covers nearly every part of open4. if you need more, there is http://codeforpeople.com/lib/ruby/open4/open4-0.9.3/lib/open4.rb it is an extremely small library > any expirience with open4? help? pointers? > mayby i'm simply missing some obvious way? i wrote open4 - so i'm expirienced with it ;-) can you give and example of exactly what you're trying to do? regards. -a -- be kind whenever possible... it is always possible. - the dalai lama