diff options
author | crupest <crupest@outlook.com> | 2023-02-06 00:09:57 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2023-02-06 00:09:57 +0800 |
commit | 7d41d457fe6e7433df030b4e5a3ae59093ad929d (patch) | |
tree | 1e510ac24115aec82521f4acb6fec20df256feb3 /linux-run/linux-run.h | |
parent | 65267139ce50b4b52f934b9750e5e4f718c538e6 (diff) | |
download | life-7d41d457fe6e7433df030b4e5a3ae59093ad929d.tar.gz life-7d41d457fe6e7433df030b4e5a3ae59093ad929d.tar.bz2 life-7d41d457fe6e7433df030b4e5a3ae59093ad929d.zip |
Add linux-run.
Diffstat (limited to 'linux-run/linux-run.h')
-rw-r--r-- | linux-run/linux-run.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/linux-run/linux-run.h b/linux-run/linux-run.h new file mode 100644 index 0000000..d953115 --- /dev/null +++ b/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 |