From 99e2e923d0c77b02f3fb4ff648ea916954868606 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 28 Feb 2025 23:13:39 +0800 Subject: chore(store): move everything to store. --- store/works/life/linux-run/linux-run.h | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 store/works/life/linux-run/linux-run.h (limited to 'store/works/life/linux-run/linux-run.h') diff --git a/store/works/life/linux-run/linux-run.h b/store/works/life/linux-run/linux-run.h new file mode 100644 index 0000000..d953115 --- /dev/null +++ b/store/works/life/linux-run/linux-run.h @@ -0,0 +1,43 @@ +#ifndef LINUX_RUN_H +#define LINUX_RUN_H + +#include +#include +#include +#include + +namespace linux_run { + +enum StopReason { Exited, Killed }; + +struct RunOptions { + RunOptions() + : timeout_in_second(0), check_exit_code(true), stop_reason(nullptr), + exit_code(nullptr) {} + + int timeout_in_second; + bool check_exit_code; + std::string stdin_file_path; + std::string stdout_file_path; + StopReason *stop_reason; + int *exit_code; + // Before reap so you can get final information of the process. + std::function before_reap_callback; +}; + +class TimeoutError : std::runtime_error { +public: + using runtime_error::runtime_error; +}; + +class ExitCodeError : std::runtime_error { +public: + using runtime_error::runtime_error; +}; + +void run(const std::string &program, std::vector arguments, + RunOptions options); + +} // namespace linux_run + +#endif -- cgit v1.2.3