Ruby:如何在执行过程中将arg传递给系统命令

问题描述:

美好的一天! 这是一个非常简单的问题,但我不知道如何处理它。所以我问你的建议或方向。 我对调用unix命令做了一个system,并在执行过程中要求输入字符串描述。我怎样才能做到这一点? 谢谢!Ruby:如何在执行过程中将arg传递给系统命令

似乎我的问题解决了一半。要绝对明确有谁能够告诉我,为什么这样的代码:

#/usr/local/bin/ruby19 
#Process.daemon(true) 
exec "/bin/cp src dst" 

工作正常,但如果#Process.daemon(true)被删除它什么也不做?

+0

您需要使用类似Open3.popen3的内容才能读取进程输出并写入进程。 – 2013-03-20 06:02:54

+0

我试过Open3.popen3。看起来只是我需要的东西。 – Tkap 2013-03-20 07:03:14

+0

但是,如果我让我的脚本作为守护进程运行,结果是错误的。是否因为该脚本成为另一个线程,并有另一个PID?我之前没有与流程进行过交易。需要更深入。 – Tkap 2013-03-20 07:13:16

您可以使用IO.pipespawn(在Ruby 1.9.3中)创建一个管道到另一个进程写入。例如,

r, w = IO.pipe 
spawn("cat", :in => r) 
r.close 

# the write to the pipe, which `cat` will read from 
w.write("hello\n")