मेरा मानना है कि मैं समझता हूँ, सामान्य रूप में, ऐसा करने का एक ही रास्ता है:आप प्रक्रिया से आउटपुट कैसे स्ट्रीम करेंगे?
- उत्पादन की एक नई जोड़ी धाराओं
- कॉन्फ़िगर
command.stdout()
बनाने के लिए एकCommand
- उपयोग
Stdio::piped()
बनाएँ, औरcommand.stderr()
- स्पोन प्रक्रिया
- एक नया धागा बनाएं और इसे stderr और stdout पास करें < - ???
- रिमोट थ्रेड में, लगातार इनपुट के लिए मतदान करें और इसे आउटपुट स्ट्रीम में लिखें।
- मुख्य धागे में, प्रक्रिया समाप्त होने की प्रतीक्षा करें।
क्या यह सही लगता है?
मेरे दो वास्तविक सवाल:
वहाँ एक आसान तरीका है कि एक 'पढ़ने के धागे' प्रक्रिया के अनुसार को शामिल नहीं करता है?
यदि कोई आसान तरीका नहीं है,
Read::read()
&mut self
की आवश्यकता है; आप इसे रिमोट थ्रेड में कैसे पास करते हैं?
विशिष्ट उदाहरण है कि कैसे वास्तव में उत्पादन, नहीं यह कैसे करना है के बारे में सिर्फ सामान्य सलाह स्ट्रीम करने के लिए की प्रदान करें ...
अधिक विशिष्ट होना करने के लिए, यहाँ the default example of using spawn
है:
use std::process::Command;
let mut child = Command::new("/bin/cat")
.arg("file.txt")
.spawn()
.expect("failed to execute child");
let ecode = child.wait()
.expect("failed to wait on child");
assert!(ecode.success());
उपरोक्त उदाहरण को निकास कोड की प्रतीक्षा करने के बजाय, बच्चे के कंसोल में आउटपुट स्ट्रीम करने के लिए कैसे बदला जा सकता है?
अतः एक ट्यूटोरियल जनरेटर नहीं है। क्या आपके पास ** विशिष्ट समस्या ** है? –
सामान्य रूप से एसओ पर, वार्तालाप के लिए शुरुआती बिंदु देने के लिए, ओपी (आप) के लिए यह बेहतर है कि इस मुद्दे को प्रदर्शित करने वाले कोड कोड के रूप में न्यूनतम प्रदान किया जाए, और फिर पूछें कि समस्या को हल करने के तरीके के बारे में पूछें। उदाहरण के लिए, आप शायद कोड कोड में अपना "ऐसा करने का एक तरीका" स्विच कर सकते हैं। –
मैं किसी भी तरह से, लंबे समय तक चलने वाली प्रक्रिया और कंसोल पर आउटपुट स्ट्रीमिंग के किसी भी उदाहरण को खुशी से स्वीकार करूंगा। – Doug