Giả sử tôi có một chức năng như dưới đây, làm cách nào để nắm bắt đầu ra của cuộc gọi Process.spawn? Tôi cũng có thể giết quá trình này nếu mất nhiều thời gian hơn thời gian chờ đã chỉ định.Quá trình con ngả với thời gian chờ và ngõ ra chụp
Lưu ý rằng chức năng cũng phải là nền tảng chéo (Windows/Linux).
def execute_with_timeout!(command)
begin
pid = Process.spawn(command) # How do I capture output of this process?
status = Timeout::timeout(5) {
Process.wait(pid)
}
rescue Timeout::Error
Process.kill('KILL', pid)
end
end
Cảm ơn.
Hoàn hảo! Chính xác những gì tôi đã sau và thanh lịch hơn nhiều so với giải pháp của tôi :) – thegreendroid
Cái quái gì '_,' có nghĩa là trong mã đó? –
@TamerShlash đọc tài liệu 'Process.wait2', nó trả về một tuple (hai giá trị), và chúng ta gán một giá trị cho' status' và cái kia (cái đầu tiên) được gán cho _, đó là thực tế phổ biến khi bạn muốn loại bỏ một giá trị. –