// +build !windows,!appengine package bind import ( "os" "syscall" ) const systemdMinFd = 3 var systemdNumFds int // Unfortunately this can't be a normal init function, because their execution // order is undefined, and we need to run before the init() in bind.go. func systemdInit() { pid, err := envInt("LISTEN_PID") if err != nil || pid != os.Getpid() { return } systemdNumFds, err = envInt("LISTEN_FDS") if err != nil { systemdNumFds = 0 return } // Prevent fds from leaking to our children for i := 0; i < systemdNumFds; i++ { syscall.CloseOnExec(systemdMinFd + i) } } func usingSystemd() bool { return systemdNumFds > 0 }