From f836c506ba9afb10cea84e963d00e60e16778bcc Mon Sep 17 00:00:00 2001 From: qiyin Date: Sat, 18 Jan 2020 11:44:19 +0800 Subject: [PATCH 1/2] Avoid zombie processes --- endless.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/endless.go b/endless.go index 9604a20..576664c 100644 --- a/endless.go +++ b/endless.go @@ -477,6 +477,10 @@ func (srv *endlessServer) fork() (err error) { log.Fatalf("Restart: Failed to launch, error: %v", err) } + go func() { + // Avoid zombie processes, There is no wait subprocess state, which may lead to zombie process in subprocesses. + cmd.Wait() + }() return } From b3efcfb8211598ca390cda666a4c5f9e1b8da089 Mon Sep 17 00:00:00 2001 From: qiyin Date: Sat, 18 Jan 2020 11:46:38 +0800 Subject: [PATCH 2/2] Active termination to eliminate http.Serve error messages --- endless.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/endless.go b/endless.go index 576664c..e66612e 100644 --- a/endless.go +++ b/endless.go @@ -193,6 +193,10 @@ func (srv *endlessServer) Serve() (err error) { defer log.Println(syscall.Getpid(), "Serve() returning...") srv.setState(STATE_RUNNING) err = srv.Server.Serve(srv.EndlessListener) + // Active termination to eliminate error messages + if srv.getState() != STATE_RUNNING{ + err = nil + } log.Println(syscall.Getpid(), "Waiting for connections to finish...") srv.wg.Wait() srv.setState(STATE_TERMINATE)