+ StreamAction stdin_action;
+ Msp::FS::Path stdin_file;
+ StreamAction stdout_action;
+ Msp::FS::Path stdout_file;
+ StreamAction stderr_action;
+ Msp::IO::Pipe *capture_pipe;
+ std::string output;
+
+public:
+ /** Creates an ExternalTask with an argument array and an optional working
+ directory. The first element of the argument array should be the command
+ name. If the working directory is not specified, no chdir is done. */
+ ExternalTask(const Arguments &, const Msp::FS::Path & = Msp::FS::Path());
+
+ ~ExternalTask();
+
+ std::string get_command() const override;
+ void start() override;
+ Status check() override;
+ Status wait() override;
+private:
+ Status do_wait(bool);