github.com/ehazlett/containerd@v0.2.5/supervisor/signal.go (about)

     1  package supervisor
     2  
     3  import "os"
     4  
     5  // SignalTask holds needed parameters to signal a container
     6  type SignalTask struct {
     7  	baseTask
     8  	ID     string
     9  	PID    string
    10  	Signal os.Signal
    11  }
    12  
    13  func (s *Supervisor) signal(t *SignalTask) error {
    14  	i, ok := s.containers[t.ID]
    15  	if !ok {
    16  		return ErrContainerNotFound
    17  	}
    18  	processes, err := i.container.Processes()
    19  	if err != nil {
    20  		return err
    21  	}
    22  	for _, p := range processes {
    23  		if p.ID() == t.PID {
    24  			return p.Signal(t.Signal)
    25  		}
    26  	}
    27  	return ErrProcessNotFound
    28  }