2010-11-08 9 views
31

Sự khác nhau giữa Process.fork và các phương thức Process.spawn mới trong Ruby 1.9.2 là gì và tốt hơn là chạy chương trình khác trong một tiến trình con ? Theo như tôi hiểu Process.fork chấp nhận khối mã và Process.spawn mất một lệnh hệ thống cộng với một số tham số khác. Khi nào tôi nên sử dụng cái này thay vì cái kia?Sự khác nhau giữa Process.fork và Process.spawn trong Ruby 1.9.2

Trả lời

45

sự khác biệt giữa Process.fork và các phương pháp Process.spawn mới trong Ruby 1.9.2

Process.fork là gì cho phép bạn chạy mã ruby ​​trong quá trình khác. Process.spawn cho phép bạn chạy chương trình khác trong quy trình khác. Về cơ bản, Process.spawn giống như sử dụng Process.fork và sau đó gọi exec trong quá trình chia hai, ngoại trừ việc nó cung cấp cho bạn nhiều tùy chọn hơn.

và cái nào tốt hơn để chạy chương trình khác trong quy trình con?

Nếu bạn cần khả năng tương thích ngược, sử dụng fork + exec như spawn không có sẵn trong 1.8. Nếu không, hãy sử dụng spawn vì chạy một chương trình khác trong một tiến trình con là chính xác những gì spawn được tạo cho.

Theo tôi hiểu Process.fork chấp nhận khối mã và Process.spawn nhận lệnh hệ thống cùng với một số tham số khác.

Chính xác.

Khi nào tôi nên sử dụng cái này thay vì cái kia?

Sử dụng fork nếu bạn cần chạy mã ruby ​​tùy ý trong một quy trình riêng biệt (bạn không thể làm điều đó với spawn). Sử dụng spawn nếu bạn cần gọi một ứng dụng trong một tiến trình con.

0

Tôi tin Process.Fork forks quá trình hiện tại và Process.Spawn sinh ra một quy trình mới. Chúng khá khác nhau. Bạn có muốn một chủ đề mới hoặc một quy trình mới không?

+1

Tôi cần một quy trình mới và hiện đang sử dụng Process.fork (để mã hóa video nền). Tôi vừa tìm ra phương thức Process.spawn mới trong Ruby 1.9 và tò mò về sự khác biệt và nếu tôi có thể hưởng lợi từ nó bằng cách nào đó. – Vincent