You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gosuv/sigchld_unix.go

29 lines
367 B

// +build linux darwin
package main
import (
"os"
"os/signal"
"syscall"
)
func init() {
go watchChildSignal()
}
func watchChildSignal() {
var sigs = make(chan os.Signal, 3)
signal.Notify(sigs, syscall.SIGCHLD)
for {
<-sigs
reapChildren()
}
}
func reapChildren() {
var wstatus syscall.WaitStatus
syscall.Wait4(-1, &wstatus, syscall.WNOHANG, nil)
}