4 #ifndef RUDIMENTS_PROCESS_H
5 #define RUDIMENTS_PROCESS_H
7 #include <rudiments/private/processincludes.h>
51 static pid_t getProcessId();
55 static pid_t getParentProcessId();
59 static pid_t getProcessGroupId();
63 static pid_t getProcessGroupId(pid_t pid);
67 static bool setProcessGroupId();
70 static bool setProcessGroupId(pid_t pgid);
73 static bool setProcessGroupId(pid_t pid, pid_t pgid);
76 static pid_t getSessionId();
79 static pid_t getSessionId(pid_t pid);
85 static pid_t newSession();
88 static uid_t getRealUserId();
91 static uid_t getEffectiveUserId();
98 static bool setUserId(uid_t uid);
105 static bool setUser(
const char *username);
111 static bool setEffectiveUserId(uid_t uid);
120 static bool setRealAndEffectiveUserId(uid_t uid,
124 static gid_t getRealGroupId();
127 static gid_t getEffectiveGroupId();
134 static bool setGroupId(gid_t gid);
141 static bool setGroup(
const char *groupname);
147 static bool setEffectiveGroupId(gid_t gid);
156 static bool setRealAndEffectiveGroupId(gid_t gid,
161 static mode_t setFileCreationMask(mode_t mask);
180 static bool exec(
const char *command,
181 const char *
const *args);
191 static pid_t spawn(
const char *command,
192 const char *
const *args);
199 static bool detach();
203 static void exit(int32_t status);
208 static void exitImmediately(int32_t status);
212 static void exitOnCrashOrShutDown();
217 static int64_t checkForPidFile(
const char *filename);
226 static bool createPidFile(
const char *filename,
233 static void exitOnShutDown();
237 static void handleShutDown(
238 void (*shutdownfunction)(int32_t));
245 static void exitOnCrash();
250 static void handleCrash(
void (*crashfunction)(int32_t));
255 static void waitForChildren();
263 static void dontWaitForChildren();
265 #include <rudiments/private/process.h>