返回錯誤的錯誤errno的:: ENOENT我在test.rb以下代碼:Open3.popen3在Windows
require 'open3'
cmd = 'C:\Program Files\foo\bar.exe'
Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr|
puts "stdout: #{stdout.read}"
puts "\n\n"
puts "stderr: #{stderr.read}"
end
bar.exe
是我創建了一個控制檯應用程序,位於C:\Program Files\foo\
。當我運行bar.exe
:
- 它輸出
"Hello world!"
- 任何說法,像
bar.exe /blah
,它輸出幫助信息。
當我運行ruby test.rb
我得到這個錯誤:
C:\RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/open3.rb:193:in 'spawn': No such file or directory - C:\Program Files\foo\bar.exe (Errno::ENOENT)
from C:\RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/open3.rb:193:in 'popen_run'
from C:\RailsInstaller/Ruby2.2.0/lib/ruby/2.2.0/open3.rb:193:in 'popen3'
from test.rb:3:in '<main>'
如果我改變的代碼來調用popen3
:
Open3.popen3(cmd, '')
我沒有得到Errno::ENOENT
錯誤,而不是我弄幫助信息,但我想要"Hello World"
輸出。
我搜索了一個解決方案,但沒有任何工作,包括對「Why does Open3.popen3 return wrong error when executable is missing?」的答案。
爲什麼我得到這個錯誤,我該如何解決它?
「C:/ Program Files/foo/bar.exe」是否可以替代? – tadman