Jeśli mam PID procesu, czy jest os.FindProcess wystarczy, aby przetestować istniejący proces? Chodzi mi o to, że jeśli wróci err
, czy mogę założyć, że zostało zakończone (lub zabite)?Sprawdź, czy proces istnieje w ruchu
Edit:
Właśnie napisałem funkcję otoki wokół kill -s 0
(proces testowania bash w starym stylu). To działa bez problemu, ale nadal jestem zadowolony, jeśli nie ma innych rozwiązań (wykonane z Go bibliotek) do tego problemu .:
func checkPid(pid int) bool {
out, err := exec.Command("kill", "-s", "0", strconv.Itoa(pid)).CombinedOutput()
if err != nil {
log.Println(err)
}
if string(out) == "" {
return true // pid exist
}
return false
}
To wszystko! Dzięki za pokazanie drogi :) –
Dlaczego parsujesz w 'int64'. Czy "Atoi" nie byłoby lepsze (bez konwersji typu w 'FindProcess')? – tjameson
Tak, masz rację "Atoi" byłoby lepiej. Chyba ostatnio użyłem 'ParseInt' i zapomniałem o tym! –