link.go
func (pl *processLink) ChildClosing() <-chan struct{} {
	// grab a hold of it, and unlock, as .Closing may block.
	pl.Lock()
	child := pl.child
	pl.Unlock()

	if child == nil { // already closed? memory optimization.
		return closedCh
	}
	return child.Closing()
}
func (pl *processLink) ChildClosing() <-chan struct{} {
	// grab a hold of it, and unlock, as .Closing may block.
	pl.Lock()
	child := pl.child
	pl.Unlock()

	if child == nil { // already closed? memory optimization.
		return closedCh
	}
	return child.Closing()
}
// Closing returns whether the child is closing