package util import ( "syscall" "github.com/opencontainers/runc/libcontainer/utils" ) // Exit is the wait4 information from an exited process type Exit struct { Pid int Status int } // Reap reaps all child processes for the calling process and returns their // exit information func Reap() (exits []Exit, err error) { var ( ws syscall.WaitStatus rus syscall.Rusage ) for { pid, err := syscall.Wait4(-1, &ws, syscall.WNOHANG, &rus) if err != nil { if err == syscall.ECHILD { return exits, nil } return exits, err } if pid <= 0 { return exits, nil } exits = append(exits, Exit{ Pid: pid, Status: utils.ExitStatus(ws), }) } }