/**
* Outputs to the console terminal the line buffered standard output and
- * error of a spawned process when there is a controlling terminal and
+ * error of a spawned process when there is a controlling terminal and
* stdout/stderr have not been redirected.
*/
class SystemcallPrivate : public QObject
Q_OBJECT
public:
- SystemcallPrivate(std::string const & outfile);
+ SystemcallPrivate(std::string const & infile, std::string const & outfile,
+ std::string const & errfile);
~SystemcallPrivate();
enum State {
Starting,
Running,
Finished,
- Error
+ Error,
+ Killed
};
State state;
bool waitWhile(State, bool processEvents, int timeout = -1);
- void startProcess(QString const & cmd, std::string const & path);
-
+ void startProcess(QString const & cmd, std::string const & path,
+ std::string const & lpath, bool detach);
+
int exitCode();
QString errorMessage() const;
QString exitStatusMessage() const;
QProcess* releaseProcess();
-
+
static void killProcess(QProcess * p);
+ // when true, kill any running script ASAP
+ static bool kill_script;
+
public Q_SLOTS:
void stdOut();
/// Index to the standard error buffer.
size_t err_index_;
///
+ std::string in_file_;
+ ///
std::string out_file_;
+ ///
+ std::string err_file_;
/// Size of buffers.
static size_t const buffer_size_ = 200;
void waitAndProcessEvents();
void processEvents();
- void killProcess();
+ void killProcess();
+ /// returns false if we killed the process
+ /// actually returns Systemcall::ReturnValue
+ bool waitAndCheck();
};
} // namespace support