// Wait waits for the Process to exit or stop, and then returns a // ProcessState describing its status and an error, if any. func (p *Process) Wait() (ps *ProcessState, err error) { var waitmsg syscall.Waitmsg if p.Pid == -1 { return nil, ErrInvalid } for true { err = syscall.Await(&waitmsg) if err != nil { return nil, NewSyscallError("wait", err) } if waitmsg.Pid == p.Pid { p.done = true break } } ps = &ProcessState{ pid: waitmsg.Pid, status: &waitmsg, } return ps, nil }
// Wait waits for the Process to exit or stop, and then returns a // Waitmsg describing its status and an Error, if any. The options // (WNOHANG etc.) affect the behavior of the Wait call. func (p *Process) Wait(options int) (w *Waitmsg, err Error) { var waitmsg syscall.Waitmsg if p.Pid == -1 { return nil, EINVAL } for true { err = syscall.Await(&waitmsg) if iserror(err) { return nil, NewSyscallError("wait", err) } if waitmsg.Pid == p.Pid { break } } return &Waitmsg{waitmsg}, nil }