【问题标题】:Ruby: how to pass an arg to system command during executionRuby:如何在执行期间将 arg 传递给系统命令
【发布时间】:2013-03-20 05:59:48
【问题描述】:

美好的一天! 我认为这是一个非常简单的问题,但我不知道如何处理它。所以我向你寻求建议或方向。 我对 unix 命令进行了system 调用,并在其执行期间要求我输入字符串描述。我怎样才能做到这一点? 谢谢!

看来我的问题解决了一半。为了绝对清楚,谁能告诉我为什么这个代码:

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

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

【问题讨论】:

  • 您需要使用 Open3.popen3 之类的东西才能读取进程输出并写入进程。
  • 我试过 Open3.popen3。看起来正是我需要的。
  • 但是如果我让我的脚本作为守护进程运行,结果是错误的。是因为那个脚本变成了另一个线程并且有另一个pid吗?我之前没有处理过流程。需要更深入。

标签: ruby unix system freebsd


【解决方案1】:

您可以使用 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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2012-05-25
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    相关资源
    最近更新 更多