diff options
| author | linxin <[email protected]> | 2023-04-14 16:35:59 +0800 |
|---|---|---|
| committer | linxin <[email protected]> | 2023-04-14 16:35:59 +0800 |
| commit | bd98ac5366c8bc0df036c6ab56999895d5aa03e9 (patch) | |
| tree | 0b9627c844f1eb219de932d58a43ce46f54623f2 | |
| parent | 8555986af9ecb831c85a5081a1a2d59a88deae1c (diff) | |
修改写入时直接通过go-pipe写入文件或压缩文件
| -rw-r--r-- | corepipe/corepipe.go | 55 |
1 files 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 } |
