A class for containing portable process related functions that help create portable code.
More...
#include <process.h>
Collaboration diagram for Process:
Public Types
typedef RETSIGTYPE(*
Trap )(int)
Public Member Functions
bool
lock (bool future=true)
Static Public Member Functions
Detach current process into a daemon, posix only.
More...
static void
attach (const char *devname)
Attach the current process to another device or i/o session.
More...
Set a posix compliant signal handler.
More...
Set system call interuptable signal handler.
More...
static int
spawn (const char *exec, const char **argv, bool
wait=true)
Spawn a process and wait for it's exit code.
More...
static int
join (int pid)
Get the exit status of another process, waiting for it to exit.
More...
static bool
cancel (int pid, int sig=0)
Cancel a running child process.
More...
static const char *
getEnv (const char *name)
static void
setEnv (const char *name, const char *value, bool overwrite)
Set system environment in a standard manner.
More...
static bool
setUser (const char *id, bool grp=true)
Set the effective group id by name.
More...
Return the effective operating system page size.
More...
Used to set process priority and optionally enable realtime.
More...
Used to set process scheduling policy.
More...
Portable shortcut for setting realtime...
More...
Return true if scheduler settable.
More...
Return true if realtime scheduling.
More...
Static Private Attributes
Detailed Description
A class for containing portable process related functions that help create portable code.
These are typically referenced thru Process::xxx static member functions. Many of these members are used both for win32 and posix systems although some may be platform specific.
Peocess wrapper class.
- Author
- David Sugar dyfet.nosp@m.@ost.nosp@m.el.co.nosp@m.m
Definition at line 69 of file process.h.
Member Typedef Documentation
typedef RETSIGTYPE(* Process::Trap)(int)
Member Function Documentation
static void Process::attach
(
const char *
devname )
static
Attach the current process to another device or i/o session.
It is deamonified and dissasociated with the prior parent process and controlling terminal.
- Parameters
-
devname path to attach to.
static bool Process::cancel
(
int
pid,
int
sig = 0
)
static
Cancel a running child process.
- Returns
- 0 on success.
- Parameters
-
pid process id.
sig cancel signal to apply.
static void Process::detach
(
void
)
static
Detach current process into a daemon, posix only.
Perhaps a similar method can be used for creating win32 "services"?
static const char* Process::getConfigDir
(
void
)
static
Get etc prefix path.
- Returns
- etc prefix.
static const char* Process::getEnv
(
const char *
name )
static
Get system environment.
- Returns
- system environ symbol.
- Parameters
-
name of symbol.
static const char* Process::getHomeDir
(
void
)
static
Get home directory.
- Returns
- user home directory.
static size_t Process::getPageSize
(
void
)
static
Return the effective operating system page size.
- Returns
- system page size.
static const char* Process::getUser
(
void
)
static
Get user name.
- Returns
- user login id.
static bool Process::isRealtime
(
void
)
inlinestatic
Return true if realtime scheduling.
Definition at line 246 of file process.h.
static bool Process::isScheduler
(
void
)
static
Return true if scheduler settable.
static int Process::join
(
int
pid )
static
Get the exit status of another process, waiting for it to exit.
- Returns
- exit code from process.
- Parameters
-
pid process id.
bool Process::lock
(
bool
future = true
)
Lock a process in memory.
Ideally you should be deep enough where additional memallocs for functions will not kill you, or use false for future.
- Returns
- true if successful.
- Parameters
-
future pages as well...
static void Process::setEnv
(
const char *
name,
const char *
value,
bool
overwrite
)
static
Set system environment in a standard manner.
- Parameters
-
name of environment symbol to set.
value of environment symbol.
overwrite true if replace existing symbol.
static bool Process::setGroup
(
const char *
id )
static
Set the effective group id by name.
- Returns
- true if successful.
static
Trap Process::setInterruptSignal
(
int
signo,
)
static
Set system call interuptable signal handler.
#return previous handler.
- Parameters
-
signo signal no.
handler trap handler.
static
Trap Process::setPosixSignal
(
int
signo,
)
static
Set a posix compliant signal handler.
- Returns
- previous handler.
- Parameters
-
signo signal no.
handler trap handler.
static void Process::setPriority
(
int
pri )
static
Used to set process priority and optionally enable realtime.
static void Process::setRealtime
(
int
pri = 0
)
static
Portable shortcut for setting realtime...
static void Process::setScheduler
(
const char *
policy )
static
Used to set process scheduling policy.
static bool Process::setUser
(
const char *
id,
bool
grp = true
)
static
Set user id by name.
- Returns
- true if successful.
static int Process::spawn
(
const char *
exec,
const char **
argv,
bool
wait = true
)
static
Spawn a process and wait for it's exit code.
In win32 this is done with the spawn system call. In posix, this is done with a fork, an execvp, and a waitpid.
- Warning
- The implementation differences between posix and win32 systems may cause side effects. For instance, if you use atexit() and this spawn method, on posix systems the function set up with atexit() will be called when the parent process of the fork exits, which will not happen on Win32 systems.
- Returns
- error code from process.
- Parameters
-
exec name of executable.
argv list of command arguments.
wait for process to exit before return.
void Process::unlock
(
void
)
Field Documentation
bool Process::rtflag
staticprivate
The documentation for this class was generated from the following file: