Ruby:如何在执行过程中将arg传递给系统命令
问题描述:
美好的一天! 这是一个非常简单的问题,但我不知道如何处理它。所以我问你的建议或方向。 我对调用unix命令做了一个system
,并在执行过程中要求输入字符串描述。我怎样才能做到这一点? 谢谢!Ruby:如何在执行过程中将arg传递给系统命令
似乎我的问题解决了一半。要绝对明确有谁能够告诉我,为什么这样的代码:
#/usr/local/bin/ruby19
#Process.daemon(true)
exec "/bin/cp src dst"
工作正常,但如果#
从Process.daemon(true)
被删除它什么也不做?
答
您可以使用IO.pipe
和spawn
(在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")
您需要使用类似Open3.popen3的内容才能读取进程输出并写入进程。 – 2013-03-20 06:02:54
我试过Open3.popen3。看起来只是我需要的东西。 – Tkap 2013-03-20 07:03:14
但是,如果我让我的脚本作为守护进程运行,结果是错误的。是否因为该脚本成为另一个线程,并有另一个PID?我之前没有与流程进行过交易。需要更深入。 – Tkap 2013-03-20 07:13:16