首页 > 系统相关 >文件锁-防止进程重复启动

文件锁-防止进程重复启动

时间:2023-12-22 10:23:06浏览次数:37  
标签:nil err 重复 lock pid 防止 进程 os pidStr


func Lock() {
	lockFile := "./lock.pid"
	lock, err := os.Open(lockFile)
	if err == nil {
		defer lock.Close()
		filePid, err := ioutil.ReadAll(lock)
		if err == nil {
			pidStr := fmt.Sprintf("%s", filePid)
			pid, _ := strconv.Atoi(pidStr)
			_, err := os.FindProcess(pid)
			if err == nil {
				fmt.Printf("[ERROR] 工具已启动[%s].\n", pidStr)
				os.Exit(1)
			}
		}
	}
	lock, err = os.Create(lockFile)
	if err != nil {
		log.Fatal("创建文件锁失败", err)
	}
	defer lock.Close()
	pid := fmt.Sprint(os.Getpid())
	lock.WriteString(pid)
}

感谢

Golang 防止多个进程重复执行通过文件锁
Golang如何保证不重复执行同一个进程

标签:nil,err,重复,lock,pid,防止,进程,os,pidStr
From: https://www.cnblogs.com/jiftle/p/17920706.html

相关文章

  • Excel-表格有重复资料该怎麽办?
    1.标注重复信息框选单元格——开始——条件格式——突出显示单元格规则——重复值——确定框选单元格——开始——条件格式——新建规则——使用公式确定要设置格式的单元格——输入公式——修改后一参数值为相对参照——格式——填充——选择颜色——确定注:公式例子:=countif($E$......
  • python之动态生成列表和重复数据处理
    动态生成列表:range(起始,终点,步长)方法:print(list(range(1,6)))结果:[1,2,3,4,5]print(list(range(1,22,2)))结果:[1,3,5,7,9,11,13,15,17,19,21]列表解析法生成列表:语法包含三部分:表达式用于计算列表中元素的值、循环语句用于获得循环元素、条件判断语句形式1:列......
  • 查看占用端口的进程号
    1)通过下面的命令可以查看占用端口的进程号:netstat-nao|findstr"8080"2)可以通过taskkill-pidxxxx-f命令杀死进程,也可以通过任务管理器,找到对应pid的进程,然后直接右键结束进程即可解除端口占用taskkill-pidxxxx-f......
  • java中对于jvm虚拟机进程的操作类
    在java中,Runtime类表示运行时操作类,是一个封装了JVM进程的类,每一个JVM都对应着一个Runtime类的实例,此实例由JVM运行时为其实例化。下面图示演示了其方法以及应用。......
  • Odoo中防止用户同一时间多次点击同一按钮触发函数
    我们将探讨如何在Odoo中实现一个全局防重复点击功能,以防止用户在短时间内重复点击按钮而触发多次函数调用。这种情况通常发生在用户不断快速点击同一个按钮时,导致后端函数被多次调用,可能会引起数据错误或性能问题。在Odoo中,我们可以通过自定义模块来实现这个功能。首先,我们需要在bu......
  • Linux 进程探查
    想监测Linux进程,需要熟悉ps命令的用法。Linux系统中使用的GNUps命令支持3种不同类型的命令行参数:Unix风格的参数,前面加单破折线;BSD风格的参数,前面不加破折线;GNU风格的长参数,前面加双破折线。1.Unix风格的参数Unix风格的参数是从贝尔实验室开发的AT&TUnix系统上原......
  • 断网或者杀死进程后,退出房间的最长时间
    RTCSDK5.1.13版本之前:一端杀进程,或是断网,server端会在60s后触发超时逻辑,另一端会收到对端离线的消息。不立刻发送通知是因为断网情况,server要兼容断线重连逻辑,需要对客户端的断网有一个容忍时长(目前是60s),也不会立即发送断线的通知。RTCSDK5.1.13版本及之后:可以提工单......
  • 5.经典进程同步问题
    生产者消费者问题一组生产者进程和一组消费者进程共享一个初始为空,大小为n的缓冲区。当缓冲区没满时,生产者才能把消息放入缓冲区,否则必须等待,只有缓冲区不空时,消费者才能从中取出消息,否则必须等待。由于缓冲区是临界资源,它只允许一个生产者放入消息,或一个消费者从中取出消息。......
  • 4.进程同步与互斥
    生产者消费者问题一组生产者进程和一组消费者进程共享一个初始为空,大小为n的缓冲区。当缓冲区没满时,生产者才能把消息放入缓冲区,否则必须等待,只有缓冲区不空时,消费者才能从中取出消息,否则必须等待。由于缓冲区是临界资源,它只允许一个生产者放入消息,或一个消费者从中取出消息。......
  • js 处理对象数组 + map 筛选出指定字段数据 + filter过滤重复数据/指定数据
    constres=[{id:1,name:'zhangsan',age:16,gender:0},{id:1,name:'zhangsan',age:16,gender:0},{id:2,name:'lisi',age:20,gender:1}];获取res中的id和name/*[{"id&......