-void anytun_exec(std::string const& script);
-void anytun_exec(std::string const& script, StringVector const& args);
-void anytun_exec(std::string const& script, StringList const& env);
-void anytun_exec(std::string const& script, StringVector const& args, StringList const& env);
-void waitForScript(std::string const& script, pid_t pid, int pipefd);
+class SysExec
+{
+ public:
+ SysExec(std::string const& script);
+ SysExec(std::string const& script, StringVector args);
+ SysExec(std::string const& script, StringList env);
+ SysExec(std::string const& script, StringVector args, StringList env);
+ ~SysExec();
+
+ int waitForScript();
+ int getReturnCode() const;
+
+ static void waitAndDestroy(SysExec*& s);