1package plugin 2 3import ( 4 "syscall" 5) 6 7const ( 8 // Weird name but matches the MSDN docs 9 exit_STILL_ACTIVE = 259 10 11 processDesiredAccess = syscall.STANDARD_RIGHTS_READ | 12 syscall.PROCESS_QUERY_INFORMATION | 13 syscall.SYNCHRONIZE 14) 15 16// _pidAlive tests whether a process is alive or not 17func _pidAlive(pid int) bool { 18 h, err := syscall.OpenProcess(processDesiredAccess, false, uint32(pid)) 19 if err != nil { 20 return false 21 } 22 23 var ec uint32 24 if e := syscall.GetExitCodeProcess(h, &ec); e != nil { 25 return false 26 } 27 28 return ec == exit_STILL_ACTIVE 29} 30