Bạn có thể sử dụng Process.spawn
và Process.wait2
:
pid = Process.spawn 'your.exe', '--option'
# Later...
pid, status = Process.wait2 pid
chương trình của bạn sẽ được thực hiện như một quá trình con của người phiên dịch. Bên cạnh đó, nó sẽ hoạt động như thể nó đã được gọi từ dòng lệnh.
Bạn cũng có thể sử dụng Open3.popen3
:
require 'open3'
*streams, thread = Open3.popen3 'your.exe', '--option'
# Later...
streams.each &:close
status = thread.value
Sự khác biệt chính ở đây là bạn có thể truy cập đến ba IO
đối tượng. Các luồng đầu vào, đầu ra và lỗi chuẩn của quy trình được chuyển hướng đến chúng theo thứ tự đó.
Điều này thật tuyệt nếu bạn định tiêu thụ đầu ra của chương trình hoặc liên lạc với nó thông qua luồng đầu vào tiêu chuẩn của nó. Văn bản thường được in trên thiết bị đầu cuối sẽ được cung cấp cho tập lệnh của bạn.
Bạn cũng nhận được một chuỗi sẽ đợi chương trình kết thúc thực thi, thuận tiện và trực quan.
Nguồn
2012-04-10 17:36:22