00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00044 #ifndef CCXX_PROCESS_H_
00045 #define CCXX_PROCESS_H_
00046
00047 #ifndef CCXX_CONFIG_H_
00048 #include <cc++/config.h>
00049 #endif
00050
00051 #ifndef CCXX_THREAD_H_
00052 #include <cc++/thread.h>
00053 #endif
00054
00055 #ifdef CCXX_NAMESPACES
00056 namespace ost {
00057 #endif
00058
00069 class __EXPORT Process
00070 {
00071 private:
00072 static bool rtflag;
00073
00074 public:
00075 #ifndef WIN32
00076 typedef RETSIGTYPE (*Trap)(int);
00077
00083 static void detach(void);
00084
00092 static void attach(const char *devname);
00093
00101 static Trap setPosixSignal(int signo, Trap handler);
00102
00110 static Trap setInterruptSignal(int signo, Trap handler);
00111 #endif
00112
00120 bool lock(bool future = true);
00121
00125 void unlock(void);
00126
00144 static int spawn(const char *exec, const char **argv, bool wait = true);
00145
00153 static int join(int pid);
00154
00162 static bool cancel(int pid, int sig = 0);
00163
00170 static const char *getEnv(const char *name);
00171
00179 static void setEnv(const char *name, const char *value, bool overwrite);
00180
00186 static const char *getConfigDir(void);
00187
00193 static const char *getHomeDir(void);
00194
00200 static const char *getUser(void);
00201
00207 static bool setUser(const char *id, bool grp = true);
00208
00214 static bool setGroup(const char *id);
00215
00221 static size_t getPageSize(void);
00222
00226 static void setPriority(int pri);
00227
00231 static void setScheduler(const char *policy);
00232
00236 static void setRealtime(int pri = 0);
00237
00241 static bool isScheduler(void);
00242
00246 static inline bool isRealtime(void)
00247 {return rtflag;};
00248 };
00249
00259 class __EXPORT Lockfile
00260 {
00261 private:
00262 #ifdef WIN32
00263 HANDLE _mutex;
00264 bool _flagged;
00265 #else
00266 char *_path;
00267 #endif
00268
00269 public:
00275 Lockfile(const char *name);
00276
00280 Lockfile();
00281
00285 ~Lockfile()
00286 {unlock();};
00287
00296 bool lock(const char *name);
00297
00301 void unlock(void);
00302
00308 bool isLocked(void);
00309 };
00310
00311 #ifdef CCXX_NAMESPACES
00312 }
00313 #endif
00314
00315 #endif
00316