This commit is contained in:
ston1th 2018-09-20 00:14:13 +02:00
commit 23731a3702

View file

@ -10,6 +10,7 @@ import (
"net" "net"
"os" "os"
"os/exec" "os/exec"
"os/signal"
"syscall" "syscall"
) )
@ -86,12 +87,9 @@ func MultiDrop(c Config, f func() ([]net.Listener, error)) error {
} }
if c.Foreground { if c.Foreground {
cmd.SysProcAttr.Setctty = true
cmd.Stdin = os.Stdin cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr cmd.Stderr = os.Stderr
} else {
cmd.SysProcAttr.Noctty = true
} }
if err := cmd.Start(); err != nil { if err := cmd.Start(); err != nil {
@ -99,6 +97,21 @@ func MultiDrop(c Config, f func() ([]net.Listener, error)) error {
} }
if c.Foreground { if c.Foreground {
go func() {
term := make(chan os.Signal)
signal.Notify(term, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
sigs := make(chan os.Signal)
signal.Notify(sigs, syscall.SIGSTOP, syscall.SIGCONT, syscall.SIGUSR1, syscall.SIGUSR2)
for {
select {
case sig := <-term:
cmd.Process.Signal(sig)
return
case sig := <-sigs:
cmd.Process.Signal(sig)
}
}
}()
_ = cmd.Wait() _ = cmd.Wait()
os.Exit(int(cmd.ProcessState.Sys().(syscall.WaitStatus))) os.Exit(int(cmd.ProcessState.Sys().(syscall.WaitStatus)))
} }