Guitar
BasicProcessPosix.h
Go to the documentation of this file.
1 #ifndef BASICPROCESSPOSIX_H
2 #define BASICPROCESSPOSIX_H
3 
4 #include "AbstractProcess.h"
5 #include <climits>
6 #include <optional>
7 
8 class ProcessPosix : public AbstractProcess {
9 private:
10  struct Private;
12  static void parse_args(std::string const &cmd, std::vector<std::string> *out);
13 
14 public:
15  ProcessPosix();
16  ~ProcessPosix();
17  void start(std::string const &command, bool use_input);
18  ProcessResult wait(int time = INT_MAX);
19  void stop();
20  bool is_running() const;
21  void write_input(char const *ptr, int len);
22  void close_input();
23  int get_exit_code() const;
24  int get_error_code() const;
25  std::string const &get_error_message() const;
26  std::vector<char> const &stdout_bytes() const;
27  std::vector<char> const &stderr_bytes() const;
28 
29  void close_input(bool justnow);
30 };
31 
33 private:
34  struct Private;
36 
37 protected:
38  void run();
39 
40 public:
42  ~ProcessPosixPty() override;
43  bool is_running() const override;
44  int read_output(char *ptr, int len) override;
45  void write_input(char const *ptr, int len) override;
46  void close_input();
47  void start(std::string const &cmd, std::string const &env, bool use_input) override;
48  ProcessResult wait(int time = INT_MAX) override;
49  void stop() override;
50  int get_exit_code() const override;
51  int get_error_code() const;
52  std::string const &get_error_message() const;
53 
54 };
55 
56 #endif // BASICPROCESSPOSIX_H
Definition: AbstractProcess.h:54
Definition: AbstractProcess.h:71
Definition: BasicProcessPosix.h:32
void run()
Definition: BasicProcessPosix.cpp:711
void close_input()
Definition: BasicProcessPosix.cpp:918
void write_input(char const *ptr, int len) override
Definition: BasicProcessPosix.cpp:620
void stop() override
Definition: BasicProcessPosix.cpp:907
ProcessResult wait(int time=INT_MAX) override
Definition: BasicProcessPosix.cpp:672
void start(std::string const &cmd, std::string const &env, bool use_input) override
Definition: BasicProcessPosix.cpp:640
std::string const & get_error_message() const
Definition: BasicProcessPosix.cpp:706
int get_error_code() const
Definition: BasicProcessPosix.cpp:701
int get_exit_code() const override
Definition: BasicProcessPosix.cpp:913
int read_output(char *ptr, int len) override
Definition: BasicProcessPosix.cpp:634
ProcessPosixPty()
Definition: BasicProcessPosix.cpp:603
~ProcessPosixPty() override
Definition: BasicProcessPosix.cpp:608
Private * m
Definition: BasicProcessPosix.h:34
bool is_running() const override
Definition: BasicProcessPosix.cpp:614
Definition: BasicProcessPosix.h:8
void close_input()
Definition: BasicProcessPosix.cpp:514
Private * m
Definition: BasicProcessPosix.h:10
bool is_running() const
Definition: BasicProcessPosix.cpp:535
ProcessPosix()
Definition: BasicProcessPosix.cpp:390
~ProcessPosix()
Definition: BasicProcessPosix.cpp:395
ProcessResult wait(int time=INT_MAX)
Definition: BasicProcessPosix.cpp:465
int get_error_code() const
Definition: BasicProcessPosix.cpp:490
static void parse_args(std::string const &cmd, std::vector< std::string > *out)
Definition: BasicProcessPosix.cpp:404
void write_input(char const *ptr, int len)
Definition: BasicProcessPosix.cpp:500
std::vector< char > const & stderr_bytes() const
Definition: BasicProcessPosix.cpp:524
void start(std::string const &command, bool use_input)
Definition: BasicProcessPosix.cpp:444
std::vector< char > const & stdout_bytes() const
Definition: BasicProcessPosix.cpp:519
int get_exit_code() const
Definition: BasicProcessPosix.cpp:540
std::string const & get_error_message() const
Definition: BasicProcessPosix.cpp:495
void stop()
Definition: BasicProcessPosix.cpp:529
Definition: BasicProcessPosix.cpp:588
Definition: BasicProcessPosix.cpp:380
Definition: AbstractProcess.h:21