在 Rails 应用程序(或 sinatra)中,如果我调用 shell 命令,该命令在什么上下文中运行?
我不确定我的问题是否正确,但它是否与 Rails 进程在同一线程中运行?
当你 shell out 时,是否可以将其设为异步调用?如果是,这是否意味着在操作系统级别它将启动一个新线程?它可以在线程池而不是新线程中启动吗?
最佳答案
如果您正在使用 system('cmd')
或只是反引号:
`cmd`
然后该命令将在子 shell 的上下文中执行。 如果您希望一次运行其中的多个,您可以使用 Ruby 的 fork 功能:
fork { system('cmd') }
fork { system('cmd') }
这将创建多个子进程,它们在各自的子 shell 中运行各个命令。
在此处阅读有关 fork 的信息:http://www.ruby-doc.org/core-2.0/Process.html#method-c-fork
关于ruby-on-rails - 通过 ruby 调用 shell 命令时,该命令在什么上下文中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15510871/