Вы правы, чтобы выполнить другой экземпляр запущенной программы, которую вы можете использовать os.Executable()
:
path, err := os.Executable()
if err != nil {
log.Println(err)
}
cmd := exec.Command(path)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err = cmd.Start()
if err != nil {
log.Println(err)
}
Я не знаю ваш сценарий, однако это не очень распространено.
Если вы не думаете о создании дочернего элемента (как форк / exec), возможно, вам придется передать дополнительные файловые дескрипторы с помощью cmd.ExtraFiles
дочернему элементу и комбинацию обмена сигналами для создания дочернего элемента или завершения.родитель (обычно SIGUSR1 и SIGTERM)