func (r *Runner) Signal(s os.Signal) error {
	r.childLock.RLock()
	defer r.childLock.RUnlock()
	if r.child == nil {
		return nil
	}
	return r.child.Signal(s)
}
func (r *Runner) Signal(s os.Signal) error {
	r.childLock.RLock()
	defer r.childLock.RUnlock()
	if r.child == nil {
		return nil
	}
	return r.child.Signal(s)
}
func ( r * Runner ) Signal ( s os . Signal ) error { r . childLock . RLock ( ) defer r . childLock . RUnlock ( ) if r . child == nil { return nil } return r . child . Signal ( s ) }
// Signal sends a signal to the child process, if it exists. Any errors that
// occur are returned.
Signal sends a signal to the child process if it exists . Any errors that occur are returned .