github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/osutils/lockfile/test/integration/pidlock_win_test.go (about) 1 // +build windows 2 3 package integration 4 5 import ( 6 "os" 7 "os/exec" 8 "syscall" 9 "testing" 10 ) 11 12 func sendCtrlBreak(t *testing.T, pid int) { 13 d, e := syscall.LoadDLL("kernel32.dll") 14 if e != nil { 15 t.Fatalf("LoadDLL: %v\n", e) 16 } 17 p, e := d.FindProc("GenerateConsoleCtrlEvent") 18 if e != nil { 19 t.Fatalf("FindProc: %v\n", e) 20 } 21 r, _, e := p.Call(syscall.CTRL_BREAK_EVENT, uintptr(pid)) 22 if r == 0 { 23 t.Fatalf("GenerateConsoleCtrlEvent: %v\n", e) 24 } 25 } 26 27 func interruptProcess(t *testing.T, p *os.Process) { 28 sendCtrlBreak(t, p.Pid) 29 } 30 31 func prepLockCmd(lockCmd *exec.Cmd) *exec.Cmd { 32 lockCmd.SysProcAttr = &syscall.SysProcAttr{ 33 CreationFlags: syscall.CREATE_NEW_PROCESS_GROUP, 34 } 35 return lockCmd 36 }