OXIESEC PANEL
- Current Dir:
/
/
opt
/
golang
/
1.19.4
/
src
/
os
/
signal
Server IP: 191.96.63.230
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
12/01/2022 06:13:56 PM
rwxr-xr-x
📄
doc.go
10.68 KB
12/01/2022 06:12:59 PM
rw-r--r--
📄
example_test.go
1001 bytes
12/01/2022 06:12:59 PM
rw-r--r--
📄
example_unix_test.go
1.11 KB
12/01/2022 06:12:59 PM
rw-r--r--
📁
internal
-
12/01/2022 06:13:56 PM
rwxr-xr-x
📄
sig.s
410 bytes
12/01/2022 06:12:59 PM
rw-r--r--
📄
signal.go
8.28 KB
12/01/2022 06:12:59 PM
rw-r--r--
📄
signal_cgo_test.go
6.05 KB
12/01/2022 06:12:59 PM
rw-r--r--
📄
signal_linux_test.go
1.09 KB
12/01/2022 06:12:59 PM
rw-r--r--
📄
signal_plan9.go
1.02 KB
12/01/2022 06:12:59 PM
rw-r--r--
📄
signal_plan9_test.go
3.59 KB
12/01/2022 06:12:59 PM
rw-r--r--
📄
signal_test.go
26.66 KB
12/01/2022 06:12:59 PM
rw-r--r--
📄
signal_unix.go
1023 bytes
12/01/2022 06:12:59 PM
rw-r--r--
📄
signal_windows_test.go
1.94 KB
12/01/2022 06:12:59 PM
rw-r--r--
Editing: signal_windows_test.go
Close
// Copyright 2012 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package signal import ( "bytes" "internal/testenv" "os" "os/exec" "path/filepath" "syscall" "testing" "time" ) func sendCtrlBreak(t *testing.T, pid int) { d, e := syscall.LoadDLL("kernel32.dll") if e != nil { t.Fatalf("LoadDLL: %v\n", e) } p, e := d.FindProc("GenerateConsoleCtrlEvent") if e != nil { t.Fatalf("FindProc: %v\n", e) } r, _, e := p.Call(syscall.CTRL_BREAK_EVENT, uintptr(pid)) if r == 0 { t.Fatalf("GenerateConsoleCtrlEvent: %v\n", e) } } func TestCtrlBreak(t *testing.T) { // create source file const source = ` package main import ( "log" "os" "os/signal" "time" ) func main() { c := make(chan os.Signal, 10) signal.Notify(c) select { case s := <-c: if s != os.Interrupt { log.Fatalf("Wrong signal received: got %q, want %q\n", s, os.Interrupt) } case <-time.After(3 * time.Second): log.Fatalf("Timeout waiting for Ctrl+Break\n") } } ` tmp := t.TempDir() // write ctrlbreak.go name := filepath.Join(tmp, "ctlbreak") src := name + ".go" f, err := os.Create(src) if err != nil { t.Fatalf("Failed to create %v: %v", src, err) } defer f.Close() f.Write([]byte(source)) // compile it exe := name + ".exe" defer os.Remove(exe) o, err := exec.Command(testenv.GoToolPath(t), "build", "-o", exe, src).CombinedOutput() if err != nil { t.Fatalf("Failed to compile: %v\n%v", err, string(o)) } // run it cmd := exec.Command(exe) var b bytes.Buffer cmd.Stdout = &b cmd.Stderr = &b cmd.SysProcAttr = &syscall.SysProcAttr{ CreationFlags: syscall.CREATE_NEW_PROCESS_GROUP, } err = cmd.Start() if err != nil { t.Fatalf("Start failed: %v", err) } go func() { time.Sleep(1 * time.Second) sendCtrlBreak(t, cmd.Process.Pid) }() err = cmd.Wait() if err != nil { t.Fatalf("Program exited with error: %v\n%v", err, string(b.Bytes())) } }