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);
00078 static void detach(void);
00079
00087 static void attach(const char *devname);
00088
00096 static Trap setPosixSignal(int signo, Trap handler);
00097
00105 static Trap setInterruptSignal(int signo, Trap handler);
00106 #endif
00107
00115 bool lock(bool future = true);
00116
00120 void unlock(void);
00121
00139 static int spawn(const char *exec, const char **argv, bool wait = true);
00140
00148 static int join(int pid);
00149
00157 static bool cancel(int pid, int sig = 0);
00158
00165 static const char *getEnv(const char *name);
00166
00174 static void setEnv(const char *name, const char *value, bool overwrite);
00175
00181 static const char *getConfigDir(void);
00182
00188 static const char *getHomeDir(void);
00189
00195 static const char *getUser(void);
00196
00202 static bool setUser(const char *id, bool grp = true);
00203
00209 static bool setGroup(const char *id);
00210
00216 static size_t getPageSize(void);
00217
00221 static void setPriority(int pri);
00222
00226 static void setScheduler(const char *policy);
00227
00231 static void setRealtime(int pri = 0);
00232
00236 static bool isScheduler(void);
00237 };
00238
00248 class __EXPORT Lockfile
00249 {
00250 private:
00251 #ifdef WIN32
00252 HANDLE _mutex;
00253 bool _flagged;
00254 #else
00255 char *_path;
00256 #endif
00257
00258 public:
00264 Lockfile(const char *name);
00265
00269 Lockfile();
00270
00274 ~Lockfile()
00275 {unlock();};
00276
00285 bool lock(const char *name);
00286
00290 void unlock(void);
00291
00297 bool isLocked(void);
00298 };
00299
00300 #ifdef CCXX_NAMESPACES
00301 }
00302 #endif
00303
00304 #endif
00305