Задать вопрос
@Byrger
Разработчик ПО для платежных систем

Как сделать чтоб программа не завершалась?

Привет

Подскажите как на Golang сделать программу которая не будет завершаться?
Нужно написать демон, писать ожидание нажатия кнопки не работает когда добавляешь программу в автозапуск

for{} в конце блока main() как-то не этично
IDE предлагает заменить на select{}

Оно конечно работает но как-то мне не нравится такой код, может есть что-то другое?
  • Вопрос задан
  • 1615 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
kondr1
@kondr1
golang, js, c++
Можно в конце создать блокирующий канал. Так ты сам решишь когда завершится программе. Она будет работать пока не получит пустую структуру из end
end := make(chan struct{})

<- end
Ответ написан
rkravchik
@rkravchik
System Solutions
Нужно конкретизировать задачу.
Если нужно, чтобы программа не завершалась, то можно использовать конструкцию с сигналами os/signal.
Например так:
// exit program on ps kill and Ctrl+C...
	exitc := make(chan os.Signal, 1)
	signal.Notify(exitc, os.Interrupt, os.Kill, syscall.SIGTERM)
// some code or goroutines
// ...
	sig := <- exitc
// some cleanup or signal logging and printing

Если нужно приложение "демонизировать", то посмотрите пакет VividCortex/godaemon.
Ответ написан
Комментировать
index0h
@index0h
PHP, Golang. https://github.com/index0h
forever := make(chan bool)
<-forever
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы