jjzjj

PipeWriter

全部标签

go - 关闭 io.PipeWriter 是否关闭底层文件?

我正在使用logrus用于记录并有一些自定义格式记录器。每个都被初始化为写入不同的文件,例如:fp,_:=os.OpenFile(path,os.O_APPEND|os.O_WRONLY|os.O_CREATE,0755)//errorhandlingleftoutforbrevitylog.Out=fp稍后在应用程序中,我需要更改记录器正在写入的文件(用于日志轮换逻辑)。我想要实现的是在更改记录器的输出文件之前正确关闭当前文件。但是logrus提供给我的最接近文件句柄的是Writer()返回io.PipeWriter指针的方法。那么在PipeWriter上调用Close()是否也会关

go - 从 io.PipeReader 读取与写入 io.PipeWriter 不匹配

运行这个程序:onplay.golang.orgpackagemainimport("bytes""fmt""io")funcmain(){r,w:=io.Pipe()gofunc(){deferw.Close()in:='a'//singlequotefmt.Println("writing:",in)fmt.Fprint(w,in)}()deferr.Close()buf:=new(bytes.Buffer)buf.ReadFrom(r)fmt.Print("read:",buf.Bytes())}这个输出:writing:97read:[5755]当我执行in:="a"或fmt.

go - 从 io.PipeReader 读取与写入 io.PipeWriter 不匹配

运行这个程序:onplay.golang.orgpackagemainimport("bytes""fmt""io")funcmain(){r,w:=io.Pipe()gofunc(){deferw.Close()in:='a'//singlequotefmt.Println("writing:",in)fmt.Fprint(w,in)}()deferr.Close()buf:=new(bytes.Buffer)buf.ReadFrom(r)fmt.Print("read:",buf.Bytes())}这个输出:writing:97read:[5755]当我执行in:="a"或fmt.

go - 将 []*io.PipeWriter 传递给 io.MultiWriter

我创建了一堆*io.PipeWriter并希望基于一个函数中的所有这些管道编写器创建一个多编写器。所以我调用一个类似的函数funccopyToWriters(reader*bufio.Reader,errschanerror,writers[]*io.PipeWriter){for_,writer:=rangewriters{deferwriter.Close()}mw:=io.MultiWriter(writers)_,err:=io.Copy(mw,reader)iferr!=nil{errs我调用带有参数的方法copyToWriters(reader,errs,[]*io.Pip