Я пытаюсь передать несколько *exec.Cmd
и затем записать в файл. Когда я пытаюсь с одним cmd и выводить в файл, он пишет в файл. Однако, когда я пытаюсь с несколькими командами и вывод в файл, это не так. Но, похоже, exec.Cmd работает правильно, так как он может корректно выводиться.
outfile, err := os.Create("./out.txt")
if err != nil {
panic(err)
}
defer outfile.Close()
c1 := exec.Command("sh", "-c", "while sleep 1; do echo test; done")
c1.Stdout = outfile
_ = c1.Run()
for {
}
Этот код выше записывает в файл каждую секунду.
Но когда я пытаюсь это:
outfile, err := os.Create("./out.txt")
if err != nil {
panic(err)
}
defer outfile.Close()
c1 := exec.Command("sh", "-c", "while sleep 1; do echo test; done")
c2 := exec.Command("grep", "t")
c2.Stdin, _ = c1.StdoutPipe()
c2.Stdout = outfile
_ = c2.Start()
_ = c1.Run()
c2.Wait()
Это ничего не выводит.
Но когда я изменяю c2.Stdout = outfile
на c2.Stdout = os.Stdout
, то выводится правильно
Я не могу понять, почему это происходит. Любая помощь приветствуется.