| 39 | } |
| 40 | |
| 41 | func waitExec() { |
| 42 | binary, err := exec.LookPath(os.Args[1]) |
| 43 | if err != nil { |
| 44 | panic(err) |
| 45 | } |
| 46 | |
| 47 | pipe := os.NewFile(3, "pipe") |
| 48 | if pipe != nil { |
| 49 | if _, err := pipe.Stat(); err == nil { |
| 50 | cmdBytes, err := io.ReadAll(pipe) |
| 51 | if err != nil { |
| 52 | panic(err) |
| 53 | } |
| 54 | if err := pipe.Close(); err != nil { |
| 55 | } |
| 56 | cmd := execCmd(string(cmdBytes)) |
| 57 | switch cmd { |
| 58 | case cmdAbrt: |
| 59 | fallthrough |
| 60 | default: |
| 61 | panic("Exited on request") |
| 62 | case cmdCont: |
| 63 | } |
| 64 | } |
| 65 | } |
| 66 | |
| 67 | args := os.Args[1:] |
| 68 | env := os.Environ() |
| 69 | if err := syscall.Exec(binary, args, env); err != nil { |
| 70 | panic(err) |
| 71 | } |
| 72 | panic("Exec failed.") |
| 73 | } |
| 74 | |
| 75 | func initCgroup(cfg *cgroupConfig) error { |
| 76 | |