Process.fork和Ruby 1.9.2中新的Process.spawn方法有什麼區別,哪個更適合在子進程中運行另一個程序?據我瞭解,Process.fork接受代碼塊,Process.spawn接受系統命令加上一些其他參數。當我應該使用一個而不是另一個?Ruby 1.9.2中Process.fork和Process.spawn之間的區別是什麼
31
A
回答
45
有什麼用Ruby 1.9.2
Process.fork
Process.fork和新Process.spawn方法之間的差異,您可以在另一個進程中運行Ruby代碼。 Process.spawn
允許您在另一個進程中運行另一個程序。基本上Process.spawn
就像使用Process.fork
,然後在分叉進程中調用exec
,除了它提供更多選項。
哪一個更適合在子流程中運行另一個程序?
如果您需要向後兼容性,使用fork
+ exec
爲spawn
不提供1.8。否則使用spawn
,因爲在子進程中運行另一個程序正是spawn
的。
據我瞭解,Process.fork接受代碼塊,Process.spawn接受系統命令加上一些其他參數。
沒錯。
當我應該使用一個而不是另一個?
使用fork
如果你需要在一個單獨的進程中運行任意Ruby代碼(你不能做到這一點與spawn
)。如果您需要在子流程中調用應用程序,請使用spawn
。
0
我相信Process.Fork會分叉當前進程,Process.Spawn會產生一個新進程。他們完全不同。你想要一個新的線程還是一個新的進程?
相關問題
- 1. ruby 1.9.2和ruby 2.0之間的主要/次要區別是什麼?
- 2. 在Ruby中,String()和#to_s之間的區別是什麼
- 3. $(())和expr之間的區別是什麼?
- 4. $和$ .fn之間的區別是什麼?
- 5. ++和:haskell之間的區別是什麼?
- 6. $(「」)和$ .find(「」)之間的區別是什麼?
- 7. 「\」和「\。」之間的區別是什麼?
- 8. 「$ | ++」和「$ | = 1」之間的區別是什麼
- 9. $(...)和`...`之間的區別是什麼
- 10. .equals()和==之間的區別是什麼?
- 11. [undefined]和[,]之間的區別是什麼?
- 12. Ruby 1.8.6和1.9.1之間的主要區別是什麼?
- 13. 什麼之間的區別〜^和Git中
- 14. 區別:%% a和%variable%變量之間的區別是什麼?
- 15. 什麼是爲PrintWriter和DataOutputStream之間的區別是什麼?
- 16. %w和%W之間有什麼區別
- 17. bundle.setup和bundle.require之間有什麼區別
- 18. Ruby中+和<<之間的區別
- 19. 「;」和「;」之間的區別是什麼?和T-SQL中的「GO」?
- 20. 「。」和「。」之間的區別是什麼?和[System.ENVIRONMENT] :: PowerShell中的CurrentDirectory?
- 21. MVC和MVVM之間的區別和相似之處是什麼?
- 22. TVF/UDF之間的區別是什麼
- 23. [EmailPasswordAuthProvider,EmailAuthProvider]之間的區別是什麼
- 24. System.Linq.Enumerable.WhereListIterator&System.Linq.Enumerable.WhereSelectListIterator之間的區別是什麼?
- 25. 什麼@android之間的區別:和android:
- 26. C#和MVC中System.Environment.Username和User.Identity.Name之間的區別是什麼?
- 27. 冒號「:」和胖箭頭「>」之間的區別是什麼?
- 28. 在Android中,MotionEvent中getAction()和getActionMasked()之間的區別是什麼?
- 29. Sinatra和Ramaze之間的主要區別是什麼?
- 30. rails structure.sql和schema.rb之間的區別是什麼
我需要一個新的進程,並且當前使用Process.fork(用於背景視頻編碼)。我剛剛在Ruby 1.9中發現了新的Process.spawn方法,並且對差異感到好奇,並且能夠以某種方式從中受益。 – Vincent 2010-11-09 00:09:37