code: func (c *Child) Reload() error {
  	if c.reloadSignal == nil {
  		log.Printf("[INFO] (child) restarting process")
  
  		// Take a full lock because start is going to replace the process. We also
  		// want to make sure that no other routines attempt to send reload signals
  		// during this transition.
  		c.Lock()
  		defer c.Unlock()
  
  		c.kill()
  		return c.start()
  	}
  
  	log.Printf("[INFO] (child) reloading process")
  
  	// We only need a read lock here because neither the process nor the exit
  	// channel are changing.
  	c.RLock()
  	defer c.RUnlock()
  
  	return c.reload()
  }
docs: // Reload sends the reload signal to the child process and does not wait for a
  // response. If no reload signal was provided, the process is restarted and
  // replaces the process attached to this Child.