testcases/runaway/runaway.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package main import ( "context" "fmt" "os" "os/exec" "os/signal" "syscall" "time" ) func main() { ctx, cancel := context.WithCancel(context.Background()) defer cancel() signal.NotifyContext(ctx, os.Interrupt, syscall.SIGHUP) cmd := exec.CommandContext(ctx, "sleep", "5") go func() { for { time.Sleep(5 * time.Second) fmt.Println("I'm still alive!") } }() if err := cmd.Start(); err != nil { panic("Error starting command: " + err.Error()) } if err := cmd.Wait(); err != nil { fmt.Printf("Error waiting for command: %v\n", err) } } |