utils.go 602 B

123456789101112131415161718192021222324252627282930313233
  1. package utils
  2. import (
  3. "crypto/rand"
  4. "encoding/hex"
  5. "io"
  6. "os"
  7. "syscall"
  8. )
  9. func WaitOnPid(pid int) (exitcode int, err error) {
  10. child, err := os.FindProcess(pid)
  11. if err != nil {
  12. return -1, err
  13. }
  14. state, err := child.Wait()
  15. if err != nil {
  16. return -1, err
  17. }
  18. return getExitCode(state), nil
  19. }
  20. func getExitCode(state *os.ProcessState) int {
  21. return state.Sys().(syscall.WaitStatus).ExitStatus()
  22. }
  23. func GenerateRandomName(size int) (string, error) {
  24. id := make([]byte, size)
  25. if _, err := io.ReadFull(rand.Reader, id); err != nil {
  26. return "", err
  27. }
  28. return hex.EncodeToString(id), nil
  29. }