bugfix
This commit is contained in:
parent
de6a48c088
commit
23731a3702
1 changed files with 16 additions and 3 deletions
19
godrop.go
19
godrop.go
|
|
@ -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)))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue