7 #include <arc/Thread.h>
8 #include <arc/DateTime.h>
27 std::string working_directory;
33 std::string *stdout_str_;
34 std::string *stderr_str_;
35 std::string *stdin_str_;
41 sigc::connection stdout_conn_;
42 sigc::connection stderr_conn_;
43 sigc::connection stdin_conn_;
44 sigc::connection child_conn_;
48 Glib::ArrayHandle<std::string> argv_;
49 void (*initializer_func_)(
void*);
50 void *initializer_arg_;
51 void (*kicker_func_)(
void*);
54 bool stdout_handler(Glib::IOCondition cond);
55 bool stderr_handler(Glib::IOCondition cond);
56 bool stdin_handler(Glib::IOCondition cond);
58 void child_handler(Glib::Pid pid,
int result);
71 Run(
const std::string& cmdline);
73 Run(
const std::list<std::string>& argv);
78 return argv_.size() != 0;
82 return argv_.size() == 0;
89 bool Wait(
int timeout);
119 int ReadStdout(
int timeout,
char *buf,
int size);
128 int ReadStderr(
int timeout,
char *buf,
int size);
137 int WriteStdin(
int timeout,
const char *buf,
int size);
167 void AssignKicker(
void (*kicker_func)(
void*),
void *kicker_arg);
170 working_directory = wd;
184 void Kill(
int timeout);
197 #endif // __ARC_RUN_H__