daemon.go 701 B

123456789101112131415161718192021222324252627282930313233343536
  1. package utils
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "log"
  6. "os"
  7. "strconv"
  8. )
  9. func CreatePidFile(pidfile string) error {
  10. if pidString, err := ioutil.ReadFile(pidfile); err == nil {
  11. pid, err := strconv.Atoi(string(pidString))
  12. if err == nil {
  13. if _, err := os.Stat(fmt.Sprintf("/proc/%d/", pid)); err == nil {
  14. return fmt.Errorf("pid file found, ensure docker is not running or delete %s", pidfile)
  15. }
  16. }
  17. }
  18. file, err := os.Create(pidfile)
  19. if err != nil {
  20. return err
  21. }
  22. defer file.Close()
  23. _, err = fmt.Fprintf(file, "%d", os.Getpid())
  24. return err
  25. }
  26. func RemovePidFile(pidfile string) {
  27. if err := os.Remove(pidfile); err != nil {
  28. log.Printf("Error removing %s: %s", pidfile, err)
  29. }
  30. }