Evet. Birkaç yol var:
a. %xVeya '' ' kullanın :
%x(echo hi)
%x(echo hi >&2)
`echo hi`
`echo hi >&2`
Bu yöntemler stdout'u döndürür ve stderr'i programınkine yönlendirir.
b. Kullanım system:
system 'echo hi'
system 'echo hi >&2'
system 'exit 1'
trueKomut başarılı olursa bu yöntem geri döner . Tüm çıktıları programa yönlendirir.
c. Kullanım exec:
fork { exec 'sleep 60' }
exec 'echo hi'
Bu, mevcut işlemi komut tarafından oluşturulanla değiştirir.
d. (yakut 1.9) kullanım spawn:
spawn 'sleep 1; echo one'
spawn 'echo two'
sleep 2
Bu yöntem, işlemin çıkmasını beklemez ve PID'yi döndürür.
e. Kullanım IO.popen:
io = IO.popen 'cat', 'r+'
$stdout = io
puts 'hi'
$stdout = IO.new 0
p io.read(1)
io.close
Bu yöntem IO, yeni işlemlerin girdisini / çıktısını yeniden yorumlayan bir nesne döndürür . Ayrıca şu anda programa girdi vermenin bildiğim tek yolu bu.
f. Kullanım Open3(1.9.2 ve sonrasında)
require 'open3'
stdout,stderr,status = Open3.capture3(some_command)
STDERR.puts stderr
if status.successful?
puts stdout
else
STDERR.puts "OH NO!"
end
Open3iki çıktı akışına açık erişim elde etmek için birkaç başka işleve sahiptir. Popen'e benzer, ancak size stderr'e erişim sağlar.