int main(int argc, char *argv[]) { std::vector<std::string> args; Subprocess proc = Subprocess(args); proc.run(); for (int i = 0; i < 20; ++i) proc.poll(); return 0; }
/** Runs the process and waits until it's finished. * @param[out] out takes the output written to stdout by the executed subprocess * @return true if process terminated properly * @throw SignalException if CTRL-C was pressed during execution */ bool Process::run (string *out) { Subprocess subprocess; if (!subprocess.run(_cmd, _paramstr)) return false; for (;;) { if (out) { out->clear(); subprocess.readFromPipe(*out); } Subprocess::State state = subprocess.state(); if (state != Subprocess::State::RUNNING) return state == Subprocess::State::FINISHED; SignalHandler::instance().check(); } }