Rudiments
process.h
1 // Copyright (c) 1999-2013 David Muse
2 // See the COPYING file for more information.
3 
4 #ifndef RUDIMENTS_PROCESS_H
5 #define RUDIMENTS_PROCESS_H
6 
7 #include <rudiments/private/processincludes.h>
8 
9 enum childstatechange {
10  EXIT_CHILDSTATECHANGE=0,
11  TERMINATED_CHILDSTATECHANGE,
12  STOPPED_CHILDSTATECHANGE,
13  CONTINUED_CHILDSTATECHANGE
14 };
15 
18 class RUDIMENTS_DLLSPEC process {
19  public:
20 
22  static pid_t getProcessId();
23 
26  static pid_t getParentProcessId();
27 
30  static pid_t getProcessGroupId();
31 
34  static pid_t getProcessGroupId(pid_t pid);
35 
38  static bool setProcessGroupId();
39 
41  static bool setProcessGroupId(pid_t pgid);
42 
44  static bool setProcessGroupId(pid_t pid, pid_t pgid);
45 
47  static pid_t getSessionId();
48 
50  static pid_t getSessionId(pid_t pid);
51 
56  static pid_t newSession();
57 
59  static uid_t getRealUserId();
60 
62  static uid_t getEffectiveUserId();
63 
69  static bool setUserId(uid_t uid);
70 
76  static bool setUser(const char *username);
77 
82  static bool setEffectiveUserId(uid_t uid);
83 
91  static bool setRealAndEffectiveUserId(uid_t uid,
92  uid_t euid);
93 
95  static gid_t getRealGroupId();
96 
98  static gid_t getEffectiveGroupId();
99 
105  static bool setGroupId(gid_t gid);
106 
112  static bool setGroup(const char *groupname);
113 
118  static bool setEffectiveGroupId(gid_t gid);
119 
127  static bool setRealAndEffectiveGroupId(gid_t gid,
128  gid_t egid);
129 
132  static mode_t setFileCreationMask(mode_t mask);
133 
141  static pid_t fork();
142 
151  static bool exec(const char *command,
152  const char * const *args);
153 
162  static pid_t spawn(const char *command,
163  const char * const *args);
164 
170  static bool detach();
171 
174  static void exit(int32_t status);
175 
179  static void exitImmediately(int32_t status);
180 
183  static void exitOnCrashOrShutDown();
184 
188  static int64_t checkForPidFile(const char *filename);
189 
197  static bool createPidFile(const char *filename,
198  mode_t permissions);
199 
204  static void exitOnShutDown();
205 
208  static void handleShutDown(
209  void (*shutdownfunction)(int32_t));
210 
216  static void exitOnCrash();
217 
221  static void handleCrash(void (*crashfunction)(int32_t));
222 
226  static void waitForChildren();
227 
234  static void dontWaitForChildren();
235 
279  static pid_t getChildStateChange(pid_t pid,
280  bool wait,
281  bool ignorestop,
282  bool ignorecontinue,
283  childstatechange *newstate,
284  int32_t *exitstatus,
285  int32_t *signum,
286  bool *coredump);
287 
288  #include <rudiments/private/process.h>
289 };
290 
291 #endif