From bd98ac5366c8bc0df036c6ab56999895d5aa03e9 Mon Sep 17 00:00:00 2001 From: linxin Date: Fri, 14 Apr 2023 16:35:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=86=99=E5=85=A5=E6=97=B6?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E9=80=9A=E8=BF=87go-pipe=E5=86=99=E5=85=A5?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=88=96=E5=8E=8B=E7=BC=A9=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- corepipe/corepipe.go | 55 ++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/corepipe/corepipe.go b/corepipe/corepipe.go index 5859879..5361035 100644 --- a/corepipe/corepipe.go +++ b/corepipe/corepipe.go @@ -127,20 +127,30 @@ func writeCoreDumpToFile() error { } defer file.Close() - // 从标准输入流中读取数据,并将其写入文件中 - buf := make([]byte, 1024) - for { - n, err := io.ReadAtLeast(os.Stdin, buf, 1) - if err != nil && err != io.EOF { - return err - } - if n == 0 { - break - } - if _, err := file.Write(buf[:n]); err != nil { - return err - } - } + // 创建一个管道 + reader, writer := io.Pipe() + // 将标准输入连接到管道的写入端 + go func() { + defer writer.Close() + io.Copy(writer, os.Stdin) + }() + + // 从管道的读取端将内容写入文件 + io.Copy(file, reader) + + // buf := make([]byte, 1024) + // for { + // n, err := io.ReadAtLeast(os.Stdin, buf, 1) + // if err != nil && err != io.EOF { + // return err + // } + // if n == 0 { + // break + // } + // if _, err := file.Write(buf[:n]); err != nil { + // return err + // } + // } return nil } func compress() error { @@ -167,22 +177,7 @@ func compress() error { if err != nil { return err } - - // Copy the dataStream to the zip file in chunks. - buf := make([]byte, 1024) - for { - n, err := io.ReadAtLeast(os.Stdin, buf, 1) - if err != nil && err != io.EOF { - return err - } - if n == 0 { - break - } - _, err = writer.Write(buf[:n]) - if err != nil { - return err - } - } + io.Copy(writer, os.Stdin) return nil }