在rails应用程序(或sinatra)中,如果我调用一个shell命令,这个命令在什么上下文下运行?
我不确定我问的问题是否正确,但它是否与rails进程在同一个线程中运行?
当你出钱的时候,有没有可能让这个电话不同步?如果是,这是否意味着在操作系统级别它将启动一个新线程?它能在一个线程池而不是一个新线程中启动吗?
最佳答案
如果您使用system('cmd')
或只是反勾:
`cmd`
然后该命令将在子shell的上下文中执行。
如果希望一次运行其中的多个,可以使用Rubys fork功能:
fork { system('cmd') }
fork { system('cmd') }
这将创建多个子进程,这些子进程在各自的子shell中运行各个命令。
在这里阅读分叉: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/