if out, err := cmd.CombinedOutput(); err != nil { if _, ok := err.(*exec.ExitError); ok { // Return compile errors to the user. // Rewrite compiler errors to refer to progName // instead of '/tmp/sandbox1234/main.go'. errs := strings.Replace(string(out), in, progName, -1) // "go build", invoked with a file name, puts this odd // message before any compile errors; strip it. errs = strings.Replace(errs, "# command-line-arguments\n", "", 1) return &response{Errors: errs}, nil } return nil, fmt.Errorf("error building go source: %v", err) } ctx, cancel := context.WithTimeout(context.Background(), maxRunTime) defer cancel() cmd = exec.CommandContext(ctx, "sel_ldr_x86_64", "-l", "/dev/null", "-S", "-e", exe, testParam) https://github.com/golang/playground/blob/master/sandbox.go#L320-L339