Guitar
ProcessPosix.h
Go to the documentation of this file.
1 #ifndef PROCESSPOSIX_H
2 #define PROCESSPOSIX_H
3 
4 #include "AbstractProcess.h"
5 #include "MyProcess2.h"
6 #include <optional>
7 
8 class ProcessPosix : public AbstractProcess {
10 private:
11  struct Private;
13 
14  void writeStdOut(char const *buf, size_t len);
15  void writeStdErr(char const *buf, size_t len);
16 
17  std::optional<ProcessResult> run(const std::string &cmd, bool use_input);
18 private:
19  ProcessPosix(ProcessPosix &&) = delete;
20  ProcessPosix(const ProcessPosix &) = delete;
22  ProcessPosix & operator = (const ProcessPosix &) = delete;
23 public:
24  ProcessPosix();
25  ~ProcessPosix();
26  bool isRunning() const override;
27  void writeInput(const char *ptr, int len) override;
28  int readOutput(char *ptr, int len);
29  void start(const std::string &command, bool use_input) override;
30  int wait() override;
31  void stop() override;
32  int getExitCode() const override;
33  void readResult(std::vector<char> *out);
34 
35  std::vector<char> const &stdout_bytes() const override;
36  std::vector<char> const &stderr_bytes() const override;
37 
38  void closeInput(bool justnow) override;
39 };
40 
42 private:
43  struct Private;
45 
46  void writeStdOut(char const *buf, size_t len);
47  void writeStdErr(char const *buf, size_t len);
48 
49  bool exec_posixpty(std::string const &cmd);
50 private:
52  ProcessPosixPty(const ProcessPosixPty &) = delete;
55 public:
58  bool isRunning() const override;
59  void writeInput(const char *ptr, int len) override;
60  void closeInput();
61  int readOutputStreaming(char *ptr, int len) override;
62  void start(const std::string &cmd, const std::string &env, bool use_input) override;
63  bool wait(unsigned long time = ULONG_MAX) override;
64  void stop() override;
65  int getExitCode() const override;
66  void readResult(std::vector<char> *out);
67 
68  std::string outstring() const;
69  std::string errstring() const;
70 };
71 
72 
73 #endif // PROCESSPOSIX_H
74 
Definition: AbstractProcess.h:13
Definition: AbstractProcess.h:31
Definition: ProcessPosix.h:41
~ProcessPosixPty()
Definition: ProcessPosix.cpp:364
ProcessPosixPty(const ProcessPosixPty &)=delete
void readResult(std::vector< char > *out)
Definition: ProcessPosix.cpp:447
std::string errstring() const
Definition: ProcessPosix.cpp:464
void stop() override
Definition: ProcessPosix.cpp:437
void writeStdErr(char const *buf, size_t len)
Definition: ProcessPosix.cpp:298
int getExitCode() const override
Definition: ProcessPosix.cpp:442
bool wait(unsigned long time=ULONG_MAX) override
Definition: ProcessPosix.cpp:426
void start(const std::string &cmd, const std::string &env, bool use_input) override
Definition: ProcessPosix.cpp:412
bool exec_posixpty(std::string const &cmd)
Definition: ProcessPosix.cpp:304
int readOutputStreaming(char *ptr, int len) override
Definition: ProcessPosix.cpp:400
ProcessPosixPty(ProcessPosixPty &&)=delete
ProcessPosixPty()
Definition: ProcessPosix.cpp:359
void closeInput()
Definition: ProcessPosix.cpp:387
bool isRunning() const override
Definition: ProcessPosix.cpp:370
void writeInput(const char *ptr, int len) override
Definition: ProcessPosix.cpp:375
void writeStdOut(char const *buf, size_t len)
Definition: ProcessPosix.cpp:292
std::string outstring() const
Definition: ProcessPosix.cpp:454
Private * m
Definition: ProcessPosix.h:43
ProcessPosixPty & operator=(ProcessPosixPty &&)=delete
Definition: ProcessPosix.h:8
void writeInput(const char *ptr, int len) override
Definition: ProcessPosix.cpp:192
bool isRunning() const override
Definition: ProcessPosix.cpp:187
Private * m
Definition: ProcessPosix.h:11
int readOutput(char *ptr, int len)
Definition: ProcessPosix.cpp:197
ProcessPosix(const ProcessPosix &)=delete
ProcessPosix & operator=(ProcessPosix &&)=delete
void readResult(std::vector< char > *out)
Definition: ProcessPosix.cpp:250
int getExitCode() const override
Definition: ProcessPosix.cpp:245
ProcessPosix()
Definition: ProcessPosix.cpp:29
void writeStdOut(char const *buf, size_t len)
Definition: ProcessPosix.cpp:45
void stop() override
Definition: ProcessPosix.cpp:240
~ProcessPosix()
Definition: ProcessPosix.cpp:35
std::vector< char > const & stderr_bytes() const override
Definition: ProcessPosix.cpp:262
int wait() override
Definition: ProcessPosix.cpp:224
void start(const std::string &command, bool use_input) override
Definition: ProcessPosix.cpp:208
std::vector< char > const & stdout_bytes() const override
Definition: ProcessPosix.cpp:257
std::optional< ProcessResult > run(const std::string &cmd, bool use_input)
Definition: ProcessPosix.cpp:57
void writeStdErr(char const *buf, size_t len)
Definition: ProcessPosix.cpp:51
ProcessPosix(ProcessPosix &&)=delete
void closeInput(bool justnow) override
Definition: ProcessPosix.cpp:267
Definition: ProcessPosix.cpp:277
Definition: ProcessPosix.cpp:14
Definition: MyProcess2.h:9