diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-02-28 23:13:39 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-02-28 23:13:39 +0800 |
commit | dc1f0c4c0096013799416664894c5194dc7e1f52 (patch) | |
tree | 2f5d235f778cd720f4c39ec3e56b77ba6d99f375 /store/works/life/linux-run/linux-run.h | |
parent | 7299d424d90b1effb6db69e3476ddd5af72eeba4 (diff) | |
download | crupest-dc1f0c4c0096013799416664894c5194dc7e1f52.tar.gz crupest-dc1f0c4c0096013799416664894c5194dc7e1f52.tar.bz2 crupest-dc1f0c4c0096013799416664894c5194dc7e1f52.zip |
chore(store): move everything to store.
Diffstat (limited to 'store/works/life/linux-run/linux-run.h')
-rw-r--r-- | store/works/life/linux-run/linux-run.h | 43 |
1 files changed, 43 insertions, 0 deletions
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 <functional> +#include <stdexcept> +#include <string> +#include <vector> + +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<void(int pid)> 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<std::string> arguments, + RunOptions options); + +} // namespace linux_run + +#endif |