(p *process.Process)
| 158 | } |
| 159 | |
| 160 | func (e *Engine) waitProcess(p *process.Process) { |
| 161 | if err := p.Wait(); err != nil { |
| 162 | slog.Error("failed to wait for process", "proc", p, "err", err) |
| 163 | return |
| 164 | } |
| 165 | |
| 166 | e.mu.Lock() |
| 167 | defer e.mu.Unlock() |
| 168 | delete(e.processes, p.PID) |
| 169 | if len(e.processes) == 0 { |
| 170 | if err := e.closeLocked(); err != nil { |
| 171 | slog.Error("failed to close engine after all processes exited", "err", err) |
| 172 | } |
| 173 | slog.Debug("closed engine after all processes exited") |
| 174 | } |
| 175 | } |
| 176 | |
| 177 | func (e *Engine) getProcessFast(pid int) *process.Process { |
| 178 | e.mu.RLock() |
no test coverage detected