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 public:
00071 #ifndef WIN32
00072 typedef RETSIGTYPE (*Trap)(int);
00073
00079 static void detach(void);
00080
00088 static void attach(const char *devname);
00089
00097 static Trap setPosixSignal(int signo, Trap handler);
00098
00106 static Trap setInterruptSignal(int signo, Trap handler);
00107 #endif
00108
00116 bool lock(bool future = true);
00117
00121 void unlock(void);
00122
00140 static int spawn(const char *exec, const char **argv, bool wait = true);
00141
00149 static int join(int pid);
00150
00158 static bool cancel(int pid, int sig = 0);
00159
00166 static const char *getEnv(const char *name);
00167
00175 static void setEnv(const char *name, const char *value, bool overwrite);
00176
00182 static const char *getConfigDir(void);
00183
00189 static const char *getHomeDir(void);
00190
00196 static const char *getUser(void);
00197
00203 static bool setUser(const char *id, bool grp = true);
00204
00210 static bool setGroup(const char *id);
00211
00217 static size_t getPageSize(void);
00218
00222 static void setPriority(int pri);
00223
00227 static void setScheduler(const char *policy);
00228
00232 static void setRealtime(int pri = 0);
00233
00237 static bool isScheduler(void);
00238 };
00239
00249 class __EXPORT Lockfile
00250 {
00251 private:
00252 #ifdef WIN32
00253 HANDLE _mutex;
00254 bool _flagged;
00255 #else
00256 char *_path;
00257 #endif
00258
00259 public:
00265 Lockfile(const char *name);
00266
00270 Lockfile();
00271
00275 ~Lockfile()
00276 {unlock();};
00277
00286 bool lock(const char *name);
00287
00291 void unlock(void);
00292
00298 bool isLocked(void);
00299 };
00300
00301 #ifdef CCXX_NAMESPACES
00302 }
00303 #endif
00304
00305 #endif
00306