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 - 使用地址城市和州的 Rails 地理编码

ruby-on-rails - 如何在数据库中存储不同用户的信息?

ruby-on-rails - 是否有替代的 Ctrl+C 来停止 Rails 服务器?

ruby - ERB:迭代数组并将每个值作为单行字符串的一部分输出

ruby-on-rails - 如何显示 pg-search 多重搜索结果的摘录

ruby-on-rails - 在 Ruby on Rails 中,您测试 Controller 和 View 还是大多数模型?

mysql - 优化 Rails 4/ActiveRecord/MySQL 中的删除操作

linux - 如何在 Linux 中编辑文件并添加换行符?

PHP复制功能和Apache组

在多平台上比较 2 struct tm