github.com/lingyao2333/mo-zero@v1.4.1/core/iox/pipe.go (about) 1 package iox 2 3 import "os" 4 5 // RedirectInOut redirects stdin to r, stdout to w, and callers need to call restore afterwards. 6 func RedirectInOut() (restore func(), err error) { 7 var r, w *os.File 8 r, w, err = os.Pipe() 9 if err != nil { 10 return 11 } 12 13 ow := os.Stdout 14 os.Stdout = w 15 or := os.Stdin 16 os.Stdin = r 17 restore = func() { 18 os.Stdin = or 19 os.Stdout = ow 20 } 21 22 return 23 }