Я пытаюсь понять, как использовать сжатие (gzip) для процессов, которые должны записать в допустимый канал, все в процессе.
Если канал не обнаружен, включающий процесс выдаст ошибку, заявив, чтотруба сломана.Так что, насколько я могу судить, у меня есть для использования StdoutPipe?
В этом примере я просто пытаюсь сжать вывод из echo.
package main
import (
"compress/gzip"
// "fmt"
"io"
"os"
"os/exec"
)
func main() {
f, _ := os.Create("/tmp/local_test.gz")
cmd := exec.Command("echo", "my\nstrings\nare\nfancy")
r, w := io.Pipe()
gzw := gzip.NewWriter(w)
out, _ := cmd.StdoutPipe()
cmd.Start()
go func() {
// copy stdoutpipe to gz writer?
io.Copy(w, out)
gzw.Close()
w.Close()
}()
// copy pipe to file?
io.Copy(f, r)
}
Файл написан, но не в формате gzip?
$ file /tmp/local_test.gz
/tmp/local_test.gz: data
$ gunzip /tmp/local_test.gz
gunzip: /tmp/local_test.gz: not in gzip format