gpt4 book ai didi

windows - 使用 Golang 限制为可执行文件的单个实例

转载 作者:IT王子 更新时间:2023-10-29 01:16:27 26 4
gpt4 key购买 nike

我一次只需要允许我的 Golang 可执行文件的一个实例。我不确定如何使用全局互斥锁来确保没有其他实例在运行。

这将在 Windows 机器上运行。

最佳答案

我知道这个主题有点陈旧,但我最近在 Windows 上需要它,我会在这里发布我是如何做的,以防其他人需要。

感谢@VonC 为我指明了正确的方向。

var (
kernel32 = syscall.NewLazyDLL("kernel32.dll")
procCreateMutex = kernel32.NewProc("CreateMutexW")
)

func CreateMutex(name string) (uintptr, error) {
ret, _, err := procCreateMutex.Call(
0,
0,
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(name))),
)
switch int(err.(syscall.Errno)) {
case 0:
return ret, nil
default:
return ret, err
}
}

// mutexName starting with "Global\" will work across all user sessions
_, err := CreateMutex("SomeMutexName")

我创建了一个包含更完整示例的库:https://github.com/rodolfoag/gow32

谢谢!

关于windows - 使用 Golang 限制为可执行文件的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23162986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com