程序开发的时候,为了避免程序多次启动,都会来个进程所的管制,
保证你的程序只运行了一个
程序启动会在指定的位置生成程序的.pid文件,程序结束该文件自动删除。
但当程序多次启动就会检测到这个文件并报错
代码如下:
/*lock process*/
func lockProcess(){
lockFile := "/var/run/xxxxxx.pid"
lock, err := os.Create(lockFile)
if err != nil {
log.Error("create /var/run/xxxxxx.pid error:", err)
}
defer os.Remove(lockFile)
defer lock.Close()
err = syscall.Flock(int(lock.Fd()), syscall.LOCK_EX|syscall.LOCK_NB)
if err != nil {
log.Error("xxxxxx is running,/var/run/xxxxxx.pid exists")
os.Exit(1)
}
}
/*end*/