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 }