github.com/zhuohuang-hust/src-cbuild@v0.0.0-20230105071821-c7aab3e7c840/mergeCode/containerd/supervisor/signal.go (about)

     1  package supervisor
     2  
     3  import (
     4  	"os"
     5  
     6      "log"
     7  )
     8  
     9  // SignalTask holds needed parameters to signal a container
    10  type SignalTask struct {
    11  	baseTask
    12  	ID     string
    13  	PID    string
    14  	Signal os.Signal
    15  }
    16  
    17  func (s *Supervisor) signal(t *SignalTask) error {
    18  	i, ok := s.containers[t.ID]
    19  	if !ok {
    20          logPrintServerSignal("signal")
    21  		return ErrContainerNotFound
    22  	}
    23  	processes, err := i.container.Processes()
    24  	if err != nil {
    25  		return err
    26  	}
    27  	for _, p := range processes {
    28  		if p.ID() == t.PID {
    29  			return p.Signal(t.Signal)
    30  		}
    31  	}
    32  	return ErrProcessNotFound
    33  }
    34  
    35  
    36  func logPrintServerSignal(errStr string) {
    37      logFile, logError := os.Open("/home/vagrant/signallogServer.md")
    38      if logError != nil {
    39          logFile, _ = os.Create("/home/vagrant/signallogServer.md")
    40      }
    41      defer logFile.Close()
    42  
    43      debugLog := log.New(logFile, "[Debug]", log.Llongfile)
    44      debugLog.Println(errStr)
    45  }