में बाल प्रक्रिया के स्टडआउट पाइप को रीडायरेक्ट करें मैं गो में एक प्रोग्राम लिख रहा हूं जो प्रोग्राम जैसे सर्वर (गो गो) निष्पादित करता है। अब मैं अपने टर्मिनल विंडो में बाल कार्यक्रम का स्टडआउट रखना चाहता हूं जहां मैंने मूल कार्यक्रम शुरू किया था। ऐसा करने का एक तरीका cmd.Output()
फ़ंक्शन के साथ है, लेकिन यह प्रक्रिया समाप्त हो जाने के बाद ही stdout प्रिंट करता है। (यह एक समस्या है क्योंकि यह सर्वर-जैसे प्रोग्राम लंबे समय तक चलता है और मैं लॉग आउटपुट पढ़ना चाहता हूं)गो
परिवर्तनीय 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}
उत्पादन करता है) इन दो पंक्तियों को संकलित करने के लिए कोड प्राप्त करने की आवश्यकता है।
आयात विवरण की आपकी "exec" पंक्ति "os/exec" होना चाहिए। – evilspacepirate
जानकारी के लिए धन्यवाद, असल में यह केवल पहले ही go exec1 था, अब यह ओएस में है। इसे go1 – mbert
के लिए अपडेट किया गया मुझे नहीं लगता कि आपको वास्तव में 'io.Copy' को जाने के लिए दिनचर्या – rmonjo