00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __COMMAND_H__
00022 #define __COMMAND_H__
00023
00024 #include <string>
00025 #include <istream>
00026 #include <ostream>
00027 #include <vector>
00028 #include <map>
00029 #include <boost/filesystem/path.hpp>
00030
00031 namespace Spm
00032 {
00033 namespace Util
00034 {
00039 class Command
00040 {
00041 private :
00042 std::string __cmd;
00043 boost::filesystem::path __workingDir;
00044 std::vector<std::string> args;
00045 std::map<std::string,
00046 std::string> envs;
00047 unsigned int pid;
00048 int retVal;
00049
00050
00051 public:
00055 Command (const std::string & cmd);
00056
00059 Command ();
00060
00061 void setCommand (const std::string & cmd);
00062
00067 void add (const std::string & arg);
00068
00074 void add (const std::string & var,
00075 const std::string & val);
00076
00082 bool execSync (std::string & out,
00083 std::string & err);
00084
00091 bool execASync (int & out,
00092 int & err,
00093 int & in);
00094
00098 const boost::filesystem::path & getWorkingDir ();
00099
00103 void setWorkingDir (const boost::filesystem::path & dir);
00104
00108 unsigned int getPid ();
00109
00113 int getReturnValue ();
00114
00115
00116
00117
00118
00119
00120
00121
00122 static int exec (const std::string & cmd,
00123 std::string & out,
00124 std::string & err);
00125
00130 bool wait ();
00131
00132
00133
00134
00135
00136 void kill (int signal = 9);
00137 };
00138 }
00139 }
00140 #endif