From d962e4fd46c92be4894ea131d8ff56b4db97bfbd Mon Sep 17 00:00:00 2001 From: eleksir Date: Mon, 29 Apr 2024 16:30:28 +0300 Subject: [PATCH] Send signal to process after all other actions --- main.go | 52 +++++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/main.go b/main.go index dc76deb..dc13bf1 100644 --- a/main.go +++ b/main.go @@ -86,31 +86,6 @@ func reniced(cnf Config) { for _, p := range processList { ok := pool.TrySubmit(func() { if processName, err := p.Name(); err == nil { - if killSignal := kill[processName]; killSignal != 0 { - switch killSignal { //nolint:exhaustive - case syscall.SIGSTOP: - _ = p.SendSignal(killSignal) - - if cnf.Debug { - log.Printf( - "Matching processName with killProcessname (%s), SIG%s sent", - processName, - strings.ToUpper(killSignal.String()), - ) - } - - default: - _ = p.SendSignal(killSignal) - - if cnf.Debug { - log.Printf( - "Matching processName with killProcessname (%s), SIG%s sent", - processName, - strings.ToUpper(killSignal.String()), - ) - } - } - } // Для каждого процесса извлекаем его текущий priority. if currentPrioLevel, err := syscall.Getpriority(syscall.PRIO_PROCESS, int(p.Pid)); err == nil { @@ -150,6 +125,33 @@ func reniced(cnf Config) { } } } + + // Посылаем процессу сигналы, если таковые есть в конфиге. + if killSignal := kill[processName]; killSignal != 0 { + switch killSignal { //nolint:exhaustive + case syscall.SIGSTOP: + _ = p.SendSignal(killSignal) + + if cnf.Debug { + log.Printf( + "Matching processName with killProcessname (%s), SIG%s sent", + processName, + strings.ToUpper(killSignal.String()), + ) + } + + default: + _ = p.SendSignal(killSignal) + + if cnf.Debug { + log.Printf( + "Matching processName with killProcessname (%s), SIG%s sent", + processName, + strings.ToUpper(killSignal.String()), + ) + } + } + } } })