child/child.go
func (c *Child) Signal(s os.Signal) error {
	log.Printf("[INFO] (child) receiving signal %q", s.String())
	c.RLock()
	defer c.RUnlock()
	return c.signal(s)
}
func (c *Child) Signal(s os.Signal) error {
	log.Printf("[INFO] (child) receiving signal %q", s.String())
	c.RLock()
	defer c.RUnlock()
	return c.signal(s)
}
// Signal sends the signal to the child process, returning any errors that
// occur.