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 COMMONCPP_PROCESS_H_
00044 #define COMMONCPP_PROCESS_H_
00045
00046 #ifndef COMMONCPP_CONFIG_H_
00047 #include <commoncpp/config.h>
00048 #endif
00049
00050 #ifndef COMMONCPP_THREAD_H_
00051 #include <commoncpp/thread.h>
00052 #endif
00053
00054 NAMESPACE_COMMONCPP
00055
00066 class __EXPORT Process
00067 {
00068 private:
00069 static bool rtflag;
00070
00071 public:
00072 #ifndef _MSWINDOWS_
00073 typedef void (*Trap)(int);
00074
00080 static void detach(void);
00081
00089 static void attach(const char *devname);
00090
00098 static Trap setPosixSignal(int signo, Trap handler);
00099
00107 static Trap setInterruptSignal(int signo, Trap handler);
00108 #endif
00109
00117 bool lock(bool future = true);
00118
00122 void unlock(void);
00123
00141 static int spawn(const char *exec, const char **argv, bool wait = true);
00142
00150 static int join(int pid);
00151
00159 static bool cancel(int pid, int sig = 0);
00160
00167 static const char *getEnv(const char *name);
00168
00176 static void setEnv(const char *name, const char *value, bool overwrite);
00177
00183 static const char *getConfigDir(void);
00184
00190 static const char *getHomeDir(void);
00191
00197 static const char *getUser(void);
00198
00204 static bool setUser(const char *id, bool grp = true);
00205
00211 static bool setGroup(const char *id);
00212
00218 static size_t getPageSize(void);
00219
00223 static void setPriority(int pri);
00224
00228 static void setScheduler(const char *policy);
00229
00233 static void setRealtime(int pri = 0);
00234
00238 static bool isScheduler(void);
00239
00243 static inline bool isRealtime(void)
00244 {return rtflag;};
00245 };
00246
00256 class __EXPORT Lockfile
00257 {
00258 private:
00259 #ifdef _MSWINDOWS_
00260 HANDLE _mutex;
00261 bool _flagged;
00262 #else
00263 char *_path;
00264 #endif
00265
00266 public:
00272 Lockfile(const char *name);
00273
00277 Lockfile();
00278
00282 ~Lockfile()
00283 {unlock();};
00284
00293 bool lock(const char *name);
00294
00298 void unlock(void);
00299
00305 bool isLocked(void);
00306 };
00307
00308 END_NAMESPACE
00309
00310 #endif