如何在ruby中在后台运行多个外部命令
给定此Unix shell脚本: test.sh:如何在ruby中在后台运行多个外部命令,ruby,shell,unix,process,multitasking,Ruby,Shell,Unix,Process,Multitasking,给定此Unix shell脚本: test.sh: #!/bin/sh sleep 2 & sleep 5 & sleep 1 & wait time./test.sh real 0m5.008s user 0m0.040s sys 0m0.000s 在Unix机器上,如何在Ruby中完成同样的事情 sleep命令只是一个示例,假设它们是长时间运行的外部命令。直接从文档: fork { sleep 0.2; exit 2 } #=> 27432 fork
#!/bin/sh
sleep 2 &
sleep 5 &
sleep 1 &
wait
time./test.sh
real 0m5.008s
user 0m0.040s
sys 0m0.000s
在Unix机器上,如何在Ruby中完成同样的事情
sleep命令只是一个示例,假设它们是长时间运行的外部命令。直接从文档:
fork { sleep 0.2; exit 2 } #=> 27432
fork { sleep 0.1; exit 1 } #=> 27433
fork { exit 0 } #=> 27434
p Process.waitall
当然,不必使用Ruby的sleep
,您可以使用或调用任何一个外部命令来回答我自己的问题(刚刚发现这个问题):
在ruby 1.8上,您需要安装sfl gem,并且还需要:
require 'rubygems'
require 'sfl'
#/usr/bin/env ruby
pids=[]
皮德斯
require 'rubygems'
require 'sfl'
#!/usr/bin/env ruby
pids = []
pids << Kernel.fork { `sleep 2` }
pids << Kernel.fork { `sleep 5` }
pids << Kernel.fork { `sleep 1` }
pids.each { |pid| Process.wait(pid) }