signal.go 437 B

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