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 
19 class RUDIMENTS_DLLSPEC process {
20  public:
21 
23  static pid_t getProcessId();
24 
27  static pid_t getParentProcessId();
28 
31  static pid_t getProcessGroupId();
32 
35  static pid_t getProcessGroupId(pid_t pid);
36 
39  static bool setProcessGroupId();
40 
42  static bool setProcessGroupId(pid_t pgid);
43 
45  static bool setProcessGroupId(pid_t pid, pid_t pgid);
46 
48  static pid_t getSessionId();
49 
51  static pid_t getSessionId(pid_t pid);
52 
57  static pid_t newSession();
58 
60  static uid_t getUserId();
61 
63  static uid_t getEffectiveUserId();
64 
70  static bool setUserId(uid_t uid);
71 
77  static bool setUser(const char *username);
78 
83  static bool setEffectiveUserId(uid_t uid);
84 
90  static bool setEffectiveUser(const char *username);
91 
99  static bool setRealAndEffectiveUserId(uid_t uid,
100  uid_t euid);
101 
103  static gid_t getGroupId();
104 
106  static gid_t getEffectiveGroupId();
107 
113  static bool setGroupId(gid_t gid);
114 
120  static bool setGroup(const char *groupname);
121 
126  static bool setEffectiveGroupId(gid_t gid);
127 
133  static bool setEffectiveGroup(const char *groupname);
134 
142  static bool setRealAndEffectiveGroupId(gid_t gid,
143  gid_t egid);
144 
147  static mode_t setFileCreationMask(mode_t mask);
148 
156  static pid_t fork();
157 
160  static bool supportsFork();
161 
170  static bool exec(const char *command,
171  const char * const *args);
172 
183  static pid_t spawn(const char *command,
184  const char * const *args,
185  bool detached);
186 
192  static bool detach();
193 
196  static void exit(int32_t status);
197 
201  static void exitImmediately(int32_t status);
202 
206  static bool atExit(void (*function)(void));
207 
210  static void exitOnCrashOrShutDown();
211 
215  static int64_t checkForPidFile(const char *filename);
216 
224  static bool createPidFile(const char *filename,
225  mode_t permissions);
226 
232  static void exitOnShutDown();
233 
237  static void handleShutDown(
238  void (*shutdownfunction)(int32_t));
239 
246  static void exitOnCrash();
247 
252  static void handleCrash(void (*crashfunction)(int32_t));
253 
257  static void waitForChildren();
258 
265  static void dontWaitForChildren();
266 
310  static pid_t getChildStateChange(pid_t pid,
311  bool wait,
312  bool ignorestop,
313  bool ignorecontinue,
314  childstatechange *newstate,
315  int32_t *exitstatus,
316  int32_t *signum,
317  bool *coredump);
318 
321  static bool supportsGetChildStateChange();
322 
323  #include <rudiments/private/process.h>
324 };
325 
326 #endif
Definition: permissions.h:28
Definition: process.h:19