+ virtual Status wait();
+private:
+ Status do_wait(bool);
+
+public:
+ /// Sets destination for stdout. Has no effect after the task is started.
+ void set_stdout(Destination);
+
+ /// Sets destination for stderr. Has no effect after the task is started.
+ void set_stderr(Destination);
+
+ /** Returns captured output, if any. This may be called while the task is
+ still running, but it will always return all output. */
+ const std::string &get_output() const { return output; }
+
+ /** Executes a command and captures its output. Stderr is ignored, but if
+ the command exits with a nonzero status, an exception is thrown. */
+ static std::string run_and_capture_output(const Arguments &, const Msp::FS::Path & = Msp::FS::Path());