我有一个名为test.sh的shell脚本.如何从Ruby触发test.sh?
我希望test.sh作为后台进程运行,这意味着在Ruby中它是一个ansync调用.
还需要将STDERR和STDOUT写入特定文件.
有任何想法吗?
Dar*_*tle 29
@ TanzeebKhalili的答案有效,但您可能会考虑Kernel.spawn(),它不会等待进程返回:
pid = spawn("./test.sh")
Process.detach(pid)
Run Code Online (Sandbox Code Playgroud)
需要注意的是,根据该文件,不管你使用spawn()手动或fork()和system(),你应该抓住的PID,要么Process.detach()或Process.wait()退出之前.
关于重定向标准错误和输出,这很容易spawn():
pid = spawn("./test.sh", :out => "test.out", :err => "test.err")
Process.detach(pid)
Run Code Online (Sandbox Code Playgroud)
试试这个:
Process.fork { system "./test.sh" }
Run Code Online (Sandbox Code Playgroud)
不适用于Windows,您可以使用线程.
| 归档时间: |
|
| 查看次数: |
9471 次 |
| 最近记录: |