EOFException означает исключение End of File (EOF). EOF используется для указания конца файла. Обычно, если вы хотите прочитать файл до конца, вы выполняете операцию с условием, когда EOF не достиг.
Он несколько похож на «/ 0», присутствующий в конце строки. EOF вместо этого используется для обозначения конца файла
Возможно, вы пытаетесь прочитать файл после достижения EOF, что приведет к тому, что исключение будет поднято
Проблема заключалась в том, что основной процесс sh
был убит, но дочерний процесс sleep
был еще жив.
Решением было назначить группу процессов для основного процесса и уничтожить целую группу процессов.
// assign process group
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
// Kill pg
syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL)
Решение было найдено здесь