আমি গো তে একটি প্রোগ্রাম লিখছি যা প্রোগ্রামের মতো সার্ভার চালায় (এছাড়াও যান)। এখন আমি আমার টার্মিনাল উইন্ডোতে শিশু প্রোগ্রামের স্ট্যান্ডআউট পেতে চাই যেখানে আমি প্যারেন্ট প্রোগ্রামটি শুরু করেছি। এটি করার একটি উপায় হ'ল 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{}
লুপের প্রয়োজন মনে করি না ... এগুলি এখানে কেন?