Rudiments
Static Public Member Functions | List of all members
process Class Reference

Static Public Member Functions

static pid_t getProcessId ()
 
static pid_t getParentProcessId ()
 
static pid_t getProcessGroupId ()
 
static pid_t getProcessGroupId (pid_t pid)
 
static bool setProcessGroupId ()
 
static bool setProcessGroupId (pid_t pgid)
 
static bool setProcessGroupId (pid_t pid, pid_t pgid)
 
static pid_t getSessionId ()
 
static pid_t getSessionId (pid_t pid)
 
static pid_t newSession ()
 
static uid_t getRealUserId ()
 
static uid_t getEffectiveUserId ()
 
static bool setUserId (uid_t uid)
 
static bool setUser (const char *username)
 
static bool setEffectiveUserId (uid_t uid)
 
static bool setRealAndEffectiveUserId (uid_t uid, uid_t euid)
 
static gid_t getRealGroupId ()
 
static gid_t getEffectiveGroupId ()
 
static bool setGroupId (gid_t gid)
 
static bool setGroup (const char *groupname)
 
static bool setEffectiveGroupId (gid_t gid)
 
static bool setRealAndEffectiveGroupId (gid_t gid, gid_t egid)
 
static mode_t setFileCreationMask (mode_t mask)
 
static pid_t fork ()
 
static bool exec (const char *command, const char *const *args)
 
static pid_t spawn (const char *command, const char *const *args)
 
static bool detach ()
 
static void exit (int32_t status)
 
static void exitImmediately (int32_t status)
 
static void exitOnCrashOrShutDown ()
 
static int64_t checkForPidFile (const char *filename)
 
static bool createPidFile (const char *filename, mode_t permissions)
 
static void exitOnShutDown ()
 
static void handleShutDown (void(*shutdownfunction)(int32_t))
 
static void exitOnCrash ()
 
static void handleCrash (void(*crashfunction)(int32_t))
 
static void waitForChildren ()
 
static void dontWaitForChildren ()
 

Detailed Description

The process class provides methods for accessing information about and controlling the currently running process.

Member Function Documentation

static int64_t process::checkForPidFile ( const char *  filename)
static

Checks for filename "filename" and reads the process id out of it, if it exists. Returns the process id on success or -1 on failure.

static bool process::createPidFile ( const char *  filename,
mode_t  permissions 
)
static

Create's file "filename" with permissions "permissions" and puts the current process id in it. Note that when you delete this file during shutdown you must use the full pathname since the process::detach() method changes directories to "/". Returns true on success and false on failure.

static bool process::detach ( )
static

Detaches the current process from the controlling tty, creates a new session, changes directory to / and sets the file creation mask to 0. Use this method to "fork your process into the background." Returns true on success and false upon failure.

static void process::dontWaitForChildren ( )
static

This method causes the daemon not to wait on child processes which have exited. Ordinarily, you'd want to wait on child processes, but this interferes with the behavior of WEXITSTATUS() after a call to system() (and possibly other calls). This method allows you to disable waiting on child processes.

static bool process::exec ( const char *  command,
const char *const *  args 
)
static

Runs "command" with arguments "args", replacing the current running process with this new process. Whether the new process retains the process id of the current process is platform-specific. Note that the first element of array "args" should be the name of the command that you want to run, typically the same as "command". "args" should be NULL terminated. Returns false if an error occurred and otherwise does not return at all.

static void process::exit ( int32_t  status)
static

Terminates the calling process and sets the exit status to "status".

static void process::exitImmediately ( int32_t  status)
static

Terminates the calling process "immediately" (without calling any functions registered to run at exit) and sets the exit status to "status".

static void process::exitOnCrash ( )
static

Sets up a default handler that exits cleanly if the daemon crashes with a SIGSEGV (segmentation fault) signal. NOTE: The default handler calls waitForChildren() before exiting to prevent zombie processes.

static void process::exitOnCrashOrShutDown ( )
static
static void process::exitOnShutDown ( )
static

Sets up a default handler that exits cleanly when the daemon is killed with SIGINT or SIGTERM signals. NOTE: The default handler calls waitForChildren() before exiting to prevent zombie processes.

static pid_t process::fork ( )
static

Creates a child process. The child is a duplicate of the parent inheriting file descriptors and a copy of the parent's address space. The child does not have access to the parent's address space. In the parent process, the process id of the child is returned. In the child process, 0 is returned. -1 is returned if an error occurred and no child is forked.

static gid_t process::getEffectiveGroupId ( )
static

Returns the effective group id of the current process.

static uid_t process::getEffectiveUserId ( )
static

Returns the effective user id of the current process.

static pid_t process::getParentProcessId ( )
static

Returns the process id of the parent process of the current process.

static pid_t process::getProcessGroupId ( )
static

Returns the process group id of the current process.

static pid_t process::getProcessGroupId ( pid_t  pid)
static

Returns the process group id of the process pid.

static pid_t process::getProcessId ( )
static

Returns the process id of the current process.

static gid_t process::getRealGroupId ( )
static

Returns the real group id of the current process.

static uid_t process::getRealUserId ( )
static

Returns the real user id of the current process.

static pid_t process::getSessionId ( )
static

Returns the session id of the current process.

static pid_t process::getSessionId ( pid_t  pid)
static

Returns the session id of the process pid.

static void process::handleCrash ( void(*)(int32_t)  crashfunction)
static

Allows you to designate a function to run if the daemon crashes with a SIGSEGV (segmentation fault) signal.

static void process::handleShutDown ( void(*)(int32_t)  shutdownfunction)
static

Allows you to designate a function to run when the daemon is killed with SIGINT or SIGTERM signals.

static pid_t process::newSession ( )
static

Creates a new session, sets the calling process to be the process group leader and detaches from the controlling terminal. Returns the session id on success or -1 if an error occurred.

static bool process::setEffectiveGroupId ( gid_t  gid)
static

Sets the effective group id of the current process to gid. Does not set the real or saved group id's.

Returns true on success and false on failure.

static bool process::setEffectiveUserId ( uid_t  uid)
static

Sets the effective user id of the current process to uid. Does not set the real or saved user id's.

Returns true on success and false on failure.

static mode_t process::setFileCreationMask ( mode_t  mask)
static

Set file/directory creation mode mask to "mask". Returns the mask that was previously in effect.

static bool process::setGroup ( const char *  groupname)
static

Sets the effective group id of the current process to the group id of "groupname". If the effective group id is root, the real and saved group id's are also set.

Returns true on success and false on failure.

static bool process::setGroupId ( gid_t  gid)
static

Sets the effective group id of the current process to gid. If the effective group id is root, the real and saved group id's are also set.

Returns true on success and false on failure.

static bool process::setProcessGroupId ( )
static

Sets the process group id of the current process to the current process id.

static bool process::setProcessGroupId ( pid_t  pgid)
static

Sets the process group id of the current process to pgid.

static bool process::setProcessGroupId ( pid_t  pid,
pid_t  pgid 
)
static

Sets the process group id of the process pid to pgid.

static bool process::setRealAndEffectiveGroupId ( gid_t  gid,
gid_t  egid 
)
static

Sets the real group id of the current process to gid and the effective group id of the current process to egid. If the real group id is set or the effective group id is set to a value not equal to the previous real group id, the saved group id is set to the new effective group id.

Returns true on success and false on failure.

static bool process::setRealAndEffectiveUserId ( uid_t  uid,
uid_t  euid 
)
static

Sets the real user id of the current process to uid and the effective user id of the current process to euid. If the real user id is set or the effective user id is set to a value not equal to the previous real user id, the saved user id is set to the new effective user id.

Returns true on success and false on failure.

static bool process::setUser ( const char *  username)
static

Sets the effective user id of the current process to the user id of "username". If the effective user id is root, the real and saved user id's are also set.

Returns true on success and false on failure.

static bool process::setUserId ( uid_t  uid)
static

Sets the effective user id of the current process to uid. If the effective user id is root, the real and saved user id's are also set.

Returns true on success and false on failure.

static pid_t process::spawn ( const char *  command,
const char *const *  args 
)
static

Runs "command" with arguments "args" as a new process. Use this instead of a combinination of fork() and exec() as it is more efficient on some platforms. Note that the first element of array "args" should be the name of the command that you want to run, typically the same as "command". "args" should be NULL terminated. Returns the process id of the child process or -1 if an error occurred.

static void process::waitForChildren ( )
static

This method causes the daemon to wait on child processes which have exited, preventing so-called "zombie" processes from occurring.