मैं Go में एक प्रोग्राम लिख रहा हूं जो प्रोग्राम (Go) जैसे सर्वर को निष्पादित करता है। अब मैं अपनी टर्मिनल विंडो में चाइल्ड प्रोग्राम का स्टैडआउट रखना चाहता हूं, जहां मैंने पैरेंट प्रोग्राम शुरू किया है। ऐसा करने का एक तरीका cmd.Output()
फ़ंक्शन के साथ है , लेकिन यह प्रक्रिया समाप्त होने के बाद ही स्टडआउट प्रिंट करता है। (यह एक समस्या है क्योंकि यह सर्वर जैसा कार्यक्रम लंबे समय तक चलता है और मैं लॉग आउटपुट पढ़ना चाहता हूं)
चर out
का है type io.ReadCloser
और मुझे नहीं पता कि मुझे अपना कार्य प्राप्त करने के लिए इसके साथ क्या करना चाहिए, और मुझे इस विषय पर वेब पर कुछ भी उपयोगी नहीं मिल रहा है।
func main() {
cmd := exec.Command("/path/to/my/child/program")
out, err := cmd.StdoutPipe()
if err != nil {
fmt.Println(err)
}
err = cmd.Start()
if err != nil {
fmt.Println(err)
}
//fmt.Println(out)
cmd.Wait()
}
कोड के लिए स्पष्टीकरण: Println
कोड को संकलन करने के लिए फ़ंक्शन को अनइंस्टॉल करें , मुझे पता है कि Println(out io.ReadCloser)
यह एक सार्थक फ़ंक्शन नहीं है।
(यह आउटपुट का उत्पादन करता है &{3 |0 <nil> 0}
) इन दो लाइनों को केवल संकलन करने के लिए कोड की आवश्यकता होती है।
io.Copy
में गो रूटीन के भीतर कॉल करने की आवश्यकता है
cmd.Wait()
या for{}
लूप की आवश्यकता है ... ये यहां क्यों हैं?