25 explicit Subprocess(std::string exec, std::vector<std::string> args);
30 template <
typename Rep,
typename Period>
32 return read_stdout_poll_impl(std::chrono::duration_cast<std::chrono::milliseconds>(timeout).count());
58 pid_t
get_pid()
const {
return child_pid_; }
70 virtual Result<void> create(
const std::string& exec,
const std::vector<std::string>& args);
80 linux::Pipe stdout_pipe_{};
82 std::string stdout_buffer_;
83 std::size_t stdout_cursor_{};
90 std::optional<int> exit_code_;
93 std::vector<std::string> args_;
std::variant wrapper for a partial implementation of C++23's expected type
Definition expected.hpp:34
A trivially-movable, but non-copyable type.
Definition class_traits.hpp:14
Definition subprocess.hpp:21
Result< void > send_stdin(const std::string &str)
Definition subprocess.cpp:228
virtual ~Subprocess()
Definition subprocess.cpp:37
pid_t get_pid() const
Definition subprocess.hpp:58
virtual Result< void > create(const std::string &exec, const std::vector< std::string > &args)
Definition subprocess.cpp:235
const std::string & get_full_stdout()
Get all stdout since the program has launched.
Definition subprocess.cpp:200
int wait_for_exit()
Definition subprocess.cpp:57
std::optional< int > get_exit_code() const
Definition subprocess.hpp:60
virtual Result< void > start()
Definition subprocess.cpp:53
Result< void > close_pipes()
Close stdout and stdin pipes to child Useful for when the child is blocking on a read to stdin.
Definition subprocess.cpp:126
Result< std::string > read_stdout(const std::chrono::duration< Rep, Period > &timeout)
Definition subprocess.hpp:31
Result< std::string > read_stdout()
Definition subprocess.cpp:186
Subprocess & operator=(Subprocess &&) noexcept
Definition subprocess.cpp:149
bool is_alive() const
Whether child process is alive.
Definition subprocess.cpp:159
virtual Result< void > init_parent()
Definition subprocess.cpp:270
virtual Result< void > init_child()
Definition subprocess.cpp:257
virtual Result< void > restart()
Definition subprocess.cpp:87
virtual Result< void > kill()
Manually kill subprocess with SIGKILL.
Definition subprocess.cpp:74
Definition asm_buffer.hpp:19
Expected< T, ErrorKind > Result
Definition error_types.hpp:22