कहें कि मेरे पास एक कार्य है, मैं प्रोसेस.स्पॉन कॉल के आउटपुट को कैप्चर कैसे करूं? यदि प्रक्रिया निर्दिष्ट समय सीमा से अधिक समय लेती है तो मुझे प्रक्रिया को मारने में भी सक्षम होना चाहिए।टाइमआउट और कैप्चर आउटपुट के साथ फोर्क बाल प्रक्रिया
ध्यान दें कि फ़ंक्शन क्रॉस-प्लेटफ़ॉर्म (विंडोज/लिनक्स) भी होना चाहिए।
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
धन्यवाद।
बिल्कुल सही! वास्तव में मेरे समाधान के मुकाबले मैं और अधिक सुरुचिपूर्ण था :) – thegreendroid
उस कोड में '_,' मतलब क्या है? –
@TamerShlash 'Process.wait2' प्रलेखन को पढ़ता है, यह एक tuple (दो मान) देता है, और हम एक को' स्थिति 'को आवंटित करते हैं और दूसरा (पहला वाला) _ को असाइन किया जाता है, जो सामान्य अभ्यास है जब आप त्यागना चाहते हैं एक मूल्य –