4 #ifndef RUDIMENTS_PROCESS_H 5 #define RUDIMENTS_PROCESS_H 7 #include <rudiments/private/processincludes.h> 9 enum childstatechange {
10 EXIT_CHILDSTATECHANGE=0,
11 TERMINATED_CHILDSTATECHANGE,
12 STOPPED_CHILDSTATECHANGE,
13 CONTINUED_CHILDSTATECHANGE
23 static pid_t getProcessId();
27 static pid_t getParentProcessId();
31 static pid_t getProcessGroupId();
35 static pid_t getProcessGroupId(pid_t pid);
39 static bool setProcessGroupId();
42 static bool setProcessGroupId(pid_t pgid);
45 static bool setProcessGroupId(pid_t pid, pid_t pgid);
48 static pid_t getSessionId();
51 static pid_t getSessionId(pid_t pid);
57 static pid_t newSession();
60 static uid_t getUserId();
63 static uid_t getEffectiveUserId();
70 static bool setUserId(uid_t uid);
77 static bool setUser(
const char *username);
83 static bool setEffectiveUserId(uid_t uid);
90 static bool setEffectiveUser(
const char *username);
99 static bool setRealAndEffectiveUserId(uid_t uid,
103 static gid_t getGroupId();
106 static gid_t getEffectiveGroupId();
113 static bool setGroupId(gid_t gid);
120 static bool setGroup(
const char *groupname);
126 static bool setEffectiveGroupId(gid_t gid);
133 static bool setEffectiveGroup(
const char *groupname);
142 static bool setRealAndEffectiveGroupId(gid_t gid,
147 static mode_t setFileCreationMask(mode_t mask);
160 static bool supportsFork();
170 static bool exec(
const char *command,
171 const char *
const *args);
183 static pid_t spawn(
const char *command,
184 const char *
const *args,
192 static bool detach();
196 static void exit(int32_t status);
201 static void exitImmediately(int32_t status);
205 static bool sendSignal(pid_t processid, int32_t signum);
209 static bool raiseSignal(int32_t signum);
214 static bool atExit(
void (*
function)(
void));
218 static void exitOnCrashOrShutDown();
223 static int64_t checkForPidFile(
const char *filename);
232 static bool createPidFile(
const char *filename,
240 static void exitOnShutDown();
245 static void handleShutDown(
246 void (*shutdownfunction)(int32_t));
254 static void exitOnCrash();
260 static void handleCrash(
void (*crashfunction)(int32_t));
265 static void waitForChildren();
273 static void dontWaitForChildren();
278 static bool wait(pid_t pid);
284 static bool wait(pid_t pid, int32_t *exitstatus);
329 static pid_t getChildStateChange(pid_t pid,
333 childstatechange *newstate,
340 static bool supportsGetChildStateChange();
347 static void retryFailedFork();
353 static void dontRetryFailedFork();
357 static bool getRetryFailedFork();
365 static void backtrace(
output *out, uint32_t maxframes);
373 static void backtrace(
output *out);
381 static void backtrace(
const char *filename);
392 static void backtrace(
const char *filename,
396 #include <rudiments/private/process.h> Definition: permissions.h:28