| 234 | /// @param stdErr Process::StdErr::Ignore{}, Process::StdErr::Inherit{} or redirect stderr to String/Vector/Span |
| 235 | /// @returns Error if the requested executable doesn't exist / is not accessible / it cannot be executed |
| 236 | template <typename Out = StdOut, typename In = StdIn, typename Err = StdErr> |
| 237 | Result exec(Span<const StringSpan> cmd, Out&& stdOut = Out(), In&& stdIn = In(), Err&& stdErr = Err()) |
| 238 | { |
| 239 | SC_TRY(launch(cmd, stdOut, stdIn, stdErr)); |
| 240 | return waitForExitSync(); |
| 241 | } |
| 242 | |
| 243 | /// @brief gets the return code from the exited child process (valid only after exec or waitForExitSync) |