и при нажатии кнопки "stop", приложение, по всей видимости, получает сигнал SIGKILL и не может адекватно завершиться. Кто-нибудь знает, как поменять поведение IDE, чтобы отправлялся другой сигнал от dlv дебаггера?
так перехватывай sigkill
так он не особо-то и перехватывается
отлично перехватывается, это не sigterm
вообще sigterm должен goland выбрасывать и этот код обрабатывается
хз, я сигтерм ловлю и обрабатываю. При запуске аппки не в дебаге все ок, функция срабатывает. А вот в дебаге чёт не особо
попробуй еще sigint обрабатывать
signal.Notify(c, os.Interrupt, syscall.SIGINT, syscall.SIGHUP, syscall.SIGTERM, syscall.SIGABRT) как-то так у меня сейчас
хотя напрямуую syscall.SIGINT над убрать, это и есть os.Interrupt
Чувак) Сорян, я не могу не прокомментировать твою аву: "Возмездие — это акт отмщения, это месть, осуществляемая любыми средствами. В данном конкретном случае это осуществит охуенная сволочь." Привет от ценителя хороших фильмов)
все перехватывается, я проверил func main() { c, cancel := signal.NotifyContext(context.Background(), syscall.SIGTERM, syscall.SIGINT) defer func() { cancel() }() for { select { case <-c.Done(): println("signal handled") return } } }
а ты с sudo запусти
и че ~ sudo go run ./api/kek.go Password: ^Csignal handled
я же говорю, при запуске в консоли все ок.При запуске через "run" в goland все ок. При запуске в дебагере (dlv) в goland и нажатии на stop (при включенном sudo) не ок
и я грущу (
https://youtrack.jetbrains.com/issue/GO-8084/Debug-doesnt-stop-gracefully-since-2019.2.2-update вот че нашлось собственно
Обсуждают сегодня