@jajabin

Как запустить программу в фоне через вызов exec.Command?

Реализовал приложение которое принимает данные на порту по протоколу UDP, когда запускаю данное приложение из консоли оно работает как надо, далее написал к нему api, для выключения,включения и перезапуска, добавил его в переменную PATH, при первом POST запросе оно запускается, но данные не принимает, если пошлю запрос на выключение и потом на включение начинает принимать данные, но только с одного клиента и только один раз, далее нужно снова повторить операцию вкл/выкл , напомню, что при обычном включение не через api все работает как надо. Всё запускаю из под рута.
func start(e echo.Context) error {
	path, err := exec.LookPath(PARSERNAME)
	if err != nil {
		return err
	}
	cmd = exec.Command(path, "-p")
	err = cmd.Start()
	wg.Add(1)
	go func() {
		err = cmd.Wait()
		if err != nil {
			fmt.Printf("Err: %v\n", err)
		}
		wg.Done()
	}()

	return e.String(http.StatusOK,
		fmt.Sprintf("start %s\n",
			time.Now().Format("Jan _2 15:04:05")))
}

func stop(e echo.Context) error {
	if err := cmd.Process.Kill(); err != nil {
		fmt.Printf("Err: %v\n", err)
	}
	return e.String(http.StatusOK,
		fmt.Sprintf(" stop %s\n",
			time.Now().Format("Jan _2 15:04:05")))
}
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы