feat(pidproxy): added signal handler
This commit is contained in:
parent
ad8499daa5
commit
8a85ad5107
BIN
cmd/pidproxy/pidproxy
Executable file
BIN
cmd/pidproxy/pidproxy
Executable file
Binary file not shown.
@ -4,6 +4,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"os/signal"
|
||||||
"strconv"
|
"strconv"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
@ -90,7 +91,16 @@ func pidProxy(cmd *cobra.Command, args []string) error {
|
|||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
pid int
|
pid int
|
||||||
|
sc chan os.Signal
|
||||||
|
t *time.Timer
|
||||||
)
|
)
|
||||||
|
|
||||||
|
sc = make(chan os.Signal, 1)
|
||||||
|
signal.Notify(sc, unix.SIGTERM)
|
||||||
|
|
||||||
|
t = time.NewTimer(time.Second)
|
||||||
|
|
||||||
|
check:
|
||||||
for {
|
for {
|
||||||
if pid, err = readPid(pidfile); err != nil {
|
if pid, err = readPid(pidfile); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -100,8 +110,20 @@ func pidProxy(cmd *cobra.Command, args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
time.Sleep(time.Second)
|
select {
|
||||||
|
case <-t.C:
|
||||||
|
case <-sc:
|
||||||
|
if pid, err = readPid(pidfile); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = unix.Kill(pid, unix.SIGTERM); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
break check
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func readPid(pidFile string) (int, error) {
|
func readPid(pidFile string) (int, error) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user