X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fapp%2FProcess.hpp;h=6f5a5ae6f429806a3a9001885cecd26092c017f7;hb=0644360107ca50d681ae8b8cad608c7bc2ec7a40;hp=985b661aac967819adf89a9ebcb42fb4fc3fc0f7;hpb=8e75a34131e9fb04fb44a73f036da2aca872fa95;p=blank.git diff --git a/src/app/Process.hpp b/src/app/Process.hpp index 985b661..6f5a5ae 100644 --- a/src/app/Process.hpp +++ b/src/app/Process.hpp @@ -10,13 +10,17 @@ namespace blank { class Process { +public: + using Arguments = std::vector; + using Environment = std::vector; + public: /// launch process executing the file at given path with /// given arguments and environment Process( const std::string &path, - const std::vector &args, - const std::vector &env); + const Arguments &args, + const Environment &env); ~Process(); public: @@ -24,15 +28,28 @@ public: /// data is taken from given buffer, at most max_len bytes /// @return the number of bytes written std::size_t WriteIn(const void *buffer, std::size_t max_len); + /// close program's input stream + void CloseIn(); + /// read from the process' output stream /// data is stored in the given buffer, at most max_len bytes /// @return the number of bytes read std::size_t ReadOut(void *buffer, std::size_t max_len); + /// close program's output stream + void CloseOut(); + /// read from the process' error stream /// data is stored in the given buffer, at most max_len bytes /// @return the number of bytes read std::size_t ReadErr(void *buffer, std::size_t max_len); + /// close program's output stream + void CloseErr(); + /// ask the process nicely to terminate + /// (except on win32) + void Terminate(); + /// check if the process has terminated + bool Terminated(); /// wait until the process exits and fetch its exit status int Join(); @@ -40,9 +57,6 @@ private: struct Impl; std::unique_ptr impl; - bool joined; - int status; - }; }