43 lines
720 B
Go
43 lines
720 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"os"
|
||
|
)
|
||
|
|
||
|
var tmpFile = "./tmp.txt"
|
||
|
|
||
|
func tmpPrint() {
|
||
|
fmt.Println("output")
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
old := os.Stdout // keep backup of the real stdout
|
||
|
w, err := os.OpenFile(tmpFile, os.O_CREATE|os.O_WRONLY, 0644)
|
||
|
if err != nil {
|
||
|
fmt.Println(err)
|
||
|
return
|
||
|
}
|
||
|
defer w.Close()
|
||
|
os.Stdout = w
|
||
|
|
||
|
tmpPrint()
|
||
|
|
||
|
//outC := make(chan string)
|
||
|
// copy the output in a separate goroutine so printing can't block indefinitely
|
||
|
//go func() {
|
||
|
// var buf bytes.Buffer
|
||
|
// io.Copy(&buf, r)
|
||
|
// outC <- buf.String()
|
||
|
//}()
|
||
|
|
||
|
// back to normal state
|
||
|
//w.Close()
|
||
|
os.Stdout = old // restoring the real stdout
|
||
|
//out := <-outC
|
||
|
|
||
|
// reading our temp stdout
|
||
|
fmt.Println("previous output:")
|
||
|
//fmt.Print(out)
|
||
|
}
|