如何在ruby中在后台运行多个外部命令

Eri*_*rik 3 ruby unix shell process multitasking

鉴于这个Unix shell脚本:

test.sh:

#!/bin/sh
sleep 2 &
sleep 5 &
sleep 1 &
wait
Run Code Online (Sandbox Code Playgroud)

时间./test.sh

real 0m5.008s
user 0m0.040s
sys  0m0.000s
Run Code Online (Sandbox Code Playgroud)

你如何在Unix机器上用Ruby完成同样的事情?

sleep命令只是一个例子,只是假设它们是长时间运行的外部命令.

Mla*_*vić 5

直接来自Process#waitall文档:

fork { sleep 0.2; exit 2 }   #=> 27432
fork { sleep 0.1; exit 1 }   #=> 27433
fork {            exit 0 }   #=> 27434
p Process.waitall
Run Code Online (Sandbox Code Playgroud)

当然sleep,您可以使用Kernel#system反引号操作符调用任何外部命令,而不是使用Ruby .