Tôi đang viết kịch bản khởi động ruby cho một dự án trường học, và một phần của quá trình khởi động này là bắt đầu một vài quy trình nền (được viết và hoạt động đúng). Những gì tôi muốn làm là một cái gì đó dọc theo các dòng:Tạo ra một quá trình nền trong Ruby
`/path/to/daemon1 &`
`/path/to/daemon2 &`
`/path/to/daemon3 &`
Tuy nhiên, điều đó sẽ chặn cuộc gọi đầu tiên thực thi daemon1. Tôi đã thấy các tham chiếu đến phương thức Process.spawn
, nhưng điều đó có vẻ là một tính năng 1.9+ và tôi bị giới hạn ở Ruby 1.8.
Tôi cũng đã cố thực thi các trình tiện ích này từ các luồng khác nhau, nhưng tôi muốn tập lệnh khởi động của mình có thể thoát.
Vậy làm cách nào để tôi có thể bắt đầu các quy trình nền này sao cho tập lệnh khởi động của tôi không chặn và có thể thoát (nhưng vẫn có các trình nền chạy trong nền)?
Nếu bạn đang tìm kiếm thứ gì đó lớn hơn (nhưng vẫn nằm trên cùng một máy chủ), hãy xem xét daemon_controller. http://blog.phusion.nl/2008/08/25/daemon_controller-a-library-for-robust-daemon-management/ – Levi
Hoàn hảo! Tôi biết về 'fork' và' exec' (xuất phát từ nền C), nhưng đó là 'Process.detach()' mà tôi đã bỏ lỡ. Cảm ơn! –
Điều này không hoạt động như mong đợi, đối với tôi, trên OSX Lion và ruby được cài đặt sẵn. – nes1983