nsfwapp/backend/training_priority_other.go
2026-06-25 14:54:58 +02:00

47 lines
866 B
Go

//go:build !windows
package main
import (
"os/exec"
"syscall"
"time"
)
func applyTrainingLowPriorityBeforeStart(cmd *exec.Cmd, enabled bool) {
_ = cmd
_ = enabled
}
func applyTrainingLowPriorityAfterStart(cmd *exec.Cmd, enabled bool) {
if cmd == nil || cmd.Process == nil || !enabled {
return
}
_ = syscall.Setpriority(syscall.PRIO_PROCESS, cmd.Process.Pid, 10)
}
func prepareTrainingCommandForCancel(cmd *exec.Cmd) {
if cmd == nil {
return
}
if cmd.SysProcAttr == nil {
cmd.SysProcAttr = &syscall.SysProcAttr{}
}
cmd.SysProcAttr.Setpgid = true
}
func terminateTrainingCommand(cmd *exec.Cmd) {
if cmd == nil || cmd.Process == nil || cmd.Process.Pid <= 0 {
return
}
pid := cmd.Process.Pid
_ = syscall.Kill(-pid, syscall.SIGTERM)
time.Sleep(800 * time.Millisecond)
_ = syscall.Kill(-pid, syscall.SIGKILL)
_ = cmd.Process.Kill()
}