Используйте exec.CommandContext()
, если вы хотите прервать выполнение команды после истечения времени ожидания.
Затем вам нужно подождать, пока команда вернется, чтобы получить свой результат. Итак, используйте cmd.Run()
вместо cmd.Start()
. Если проблема связана с блокировкой, создайте программу, которая блокирует и ожидает завершения команды.
Например:
go func() {
ctx, cancel := context.WithTimeout(context.Background(), 100*time.Second)
defer cancel()
cmd := exec.CommandContext(ctx, ...)
err := cmd.Run()
//Process error or results
}()