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
00043 #ifndef CCXX_PROCESS_H_
00044 #define CCXX_PROCESS_H_
00045
00046 #ifndef CCXX_CONFIG_H_
00047 #include <cc++/config.h>
00048 #endif
00049
00050 #ifndef CCXX_THREAD_H_
00051 #include <cc++/thread.h>
00052 #endif
00053
00054 #ifdef CCXX_NAMESPACES
00055 namespace ost {
00056 #endif
00057
00068 class __EXPORT Process
00069 {
00070 private:
00071 static bool rtflag;
00072
00073 public:
00074 #ifndef WIN32
00075 typedef RETSIGTYPE (*Trap)(int);
00076
00082 static void detach(void);
00083
00091 static void attach(const char *devname);
00092
00100 static Trap setPosixSignal(int signo, Trap handler);
00101
00109 static Trap setInterruptSignal(int signo, Trap handler);
00110 #endif
00111
00119 bool lock(bool future = true);
00120
00124 void unlock(void);
00125
00143 static int spawn(const char *exec, const char **argv, bool wait = true);
00144
00152 static int join(int pid);
00153
00161 static bool cancel(int pid, int sig = 0);
00162
00169 static const char *getEnv(const char *name);
00170
00178 static void setEnv(const char *name, const char *value, bool overwrite);
00179
00185 static const char *getConfigDir(void);
00186
00192 static const char *getHomeDir(void);
00193
00199 static const char *getUser(void);
00200
00206 static bool setUser(const char *id, bool grp = true);
00207
00213 static bool setGroup(const char *id);
00214
00220 static size_t getPageSize(void);
00221
00225 static void setPriority(int pri);
00226
00230 static void setScheduler(const char *policy);
00231
00235 static void setRealtime(int pri = 0);
00236
00240 static bool isScheduler(void);
00241
00245 static inline bool isRealtime(void)
00246 {return rtflag;};
00247 };
00248
00258 class __EXPORT Lockfile
00259 {
00260 private:
00261 #ifdef WIN32
00262 HANDLE _mutex;
00263 bool _flagged;
00264 #else
00265 char *_path;
00266 #endif
00267
00268 public:
00274 Lockfile(const char *name);
00275
00279 Lockfile();
00280
00284 ~Lockfile()
00285 {unlock();};
00286
00295 bool lock(const char *name);
00296
00300 void unlock(void);
00301
00307 bool isLocked(void);
00308 };
00309
00310 #ifdef CCXX_NAMESPACES
00311 }
00312 #endif
00313
00314 #endif
00315