Как запустить и остановить сервер с помощью инструмента командной строки в golang - PullRequest
0 голосов
/ 20 марта 2020

У меня есть сервер GRP c (golang), который я хочу запустить и остановить с помощью инструмента командной строки, после остановки сервера он должен выполнить некоторые служебные задачи и выйти из процесса.

  • Я могу сделать это, удерживая al oop в ожидании ввода пользователя. Пример -
func main() {
    for {
        var input string
        fmt.Scanln(&input)
        //parse input
        // if 'start' execute - go start()
        // if 'stop' execute - stop() and housekeepingTask() and break
    }
 }

Могут быть разные подходы. Есть ли лучшая идея или подход, который можно использовать?

Я ищу что-то похожее, как kafka / any db start and stop работает. Любой указатель на существующее решение или подход будет полезен.

1 Ответ

0 голосов
/ 20 марта 2020

Я получил один из правильных подходов, который также прокомментировал / ответил @Mehran. Но позвольте мне немного остановиться и ответить на него подробно -

Это можно решить с помощью межпроцессного взаимодействия. У нас может быть файл bash, который отправляет пользовательские сигналы программе (если она уже запущена) и в зависимости от ее процесса может воздействовать на нее. (даже у нас может быть файл stdin, который процесс может читать и действовать)

Некоторые полезные ссылки - - https://blog.mbassem.com/2016/05/15/handling-user-defined-signals-in-go/ - Отправить команду фоновому процессу - Как сообщить о приложении, не убивая его в Linux?

Я попытаюсь добавить работающую go программу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...