ruby-on-rails - 通过 ruby​​ 调用 shell 命令时,该命令在什么上下文中运行?

标签 ruby-on-rails ruby linux ubuntu

在 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/

相关文章:

ruby-on-rails - Ruby - 从哈希中删除值

html - 如何在 Ruby on Rails 中将 HTML 标记放入 <label> 中?

ruby-on-rails - 如何在功能测试中使用 Rspec 和 Capybara 测试 cookie?

linux - 在 linux 中,用户模式堆栈存储在哪里?

c++ - 在 C++ 中导入带有扩展的 Python

linux - 尝试安装时未满足的依赖项

ruby-on-rails - 使用 Rails 进行移动地理定位?

ruby - 如何在 ruby​​ 代码中执行 setenv 命令

ruby-on-rails - 有没有办法判断一条记录在使用 find_or_create_by 创建后是否是新的

ruby-on-rails - 我可以在 Capistrano 任务中与 Rails 模型交互吗?