|
void | PreInitialise (int argc, char **argv) |
| Internal initialisation function called directly from InternalMain() . More...
|
|
virtual int | InternalMain (void *arg=NULL) |
| Main function for process, called from real main after initialisation. More...
|
|
virtual bool | IsServiceProcess () const |
|
bool | SignalTimerChange () |
|
| ~PProcess () |
|
|
Comparison | Compare (const PObject &obj) const |
| Compare two process instances. More...
|
|
virtual void | PrintOn (ostream &strm) const |
| This will print out performance indicators for the process. More...
|
|
|
virtual void | Terminate () |
| Terminate the process. More...
|
|
bool | IsAutoDelete () const |
|
int | PXBlockOnChildTerminate (int pid, const PTimeInterval &timeout) |
|
int | PXBlockOnIO (int handle, int type, const PTimeInterval &timeout) |
|
void | PXAbortBlock () const |
|
void | PrintOn (ostream &strm) const |
| Standard stream print function. More...
|
|
| P_DECLARE_TRACED_ENUM (Priority, LowestPriority, LowPriority, NormalPriority, HighPriority, HighestPriority) |
| Codes for thread priorities. More...
|
|
| PThread (PINDEX stack, AutoDeleteFlag deletion=AutoDeleteThread, Priority priorityLevel=NormalPriority, const PString &threadName=PString::Empty()) |
| Create a new thread instance. More...
|
|
| ~PThread () |
| Destroy the thread, this simply calls the Terminate() function with all its restrictions and penalties. More...
|
|
virtual void | Restart () |
| Restart a terminated thread using the same stack priority etc that was current when the thread terminated. More...
|
|
virtual PBoolean | IsTerminated () const |
| Determine if the thread has been terminated or ran to completion. More...
|
|
void | WaitForTermination () const |
| Block and wait for the thread to terminate. More...
|
|
PBoolean | WaitForTermination (const PTimeInterval &maxWait) const |
| Block and wait for the thread to terminate. More...
|
|
virtual void | Suspend (PBoolean susp=true) |
| Suspend or resume the thread. More...
|
|
virtual void | Resume () |
| Resume thread execution, this is identical to Suspend(false) . More...
|
|
virtual PBoolean | IsSuspended () const |
| Determine if the thread is currently suspended. More...
|
|
virtual void | SetPriority (Priority priorityLevel) |
| Set the priority of the thread relative to other threads in the current process. More...
|
|
virtual Priority | GetPriority () const |
| Get the current priority of the thread in the current process. More...
|
|
virtual void | SetAutoDelete (AutoDeleteFlag deletion=AutoDeleteThread) |
| Set the flag indicating thread object is to be automatically deleted when the thread ends. More...
|
|
void | SetNoAutoDelete () |
| Reet the flag indicating thread object is to be automatically deleted when the thread ends. More...
|
|
virtual PString | GetThreadName () const |
| Get the name of the thread. More...
|
|
virtual void | SetThreadName (const PString &name) |
| Change the name of the thread. More...
|
|
| PPROFILE_EXCLUDE (PThreadIdentifier GetThreadId() const ) |
|
| PPROFILE_EXCLUDE (static PThreadIdentifier GetCurrentThreadId()) |
|
| PPROFILE_EXCLUDE (PUniqueThreadIdentifier GetUniqueIdentifier() const ) |
|
| PPROFILE_EXCLUDE (static PUniqueThreadIdentifier GetCurrentUniqueIdentifier()) |
|
| PPROFILE_EXCLUDE (static PINDEX GetTotalCount()) |
|
| PPROFILE_EXCLUDE (bool GetTimes(Times ×)) |
|
| PPROFILE_EXCLUDE (static bool GetTimes(PThreadIdentifier id, Times ×)) |
|
| PPROFILE_EXCLUDE (static void GetTimes(std::vector< Times > ×)) |
|
virtual void | Main ()=0 |
| User override function for the main execution routine of the thread. More...
|
|
__inline unsigned | GetTraceContextIdentifier () const |
| Get PTRACE context identifier. More...
|
|
__inline void | SetTraceContextIdentifier (unsigned id) |
|
__inline void | SetTraceContextIdentifier (const PObject &obj) |
|
__inline void | SetTraceContextIdentifier (const PObject *obj) |
|
__inline void | CopyTraceContextIdentifier (PObject &obj) const |
|
__inline void | CopyTraceContextIdentifier (PObject *obj) const |
|
virtual | ~PObject () |
|
__inline const char * | GetClass () const |
|
__inline bool | IsClass (const char *name) const |
|
__inline const PObject * | PTraceObjectInstance () const |
|
virtual PObject * | Clone () const |
| Create a copy of the class on the heap. More...
|
|
template<class CLS > |
CLS * | CloneAs () const |
| As for Clone() but converts to specified type. More...
|
|
virtual PINDEX | HashFunction () const |
| This function yields a hash value required by the PDictionary class. More...
|
|
virtual Comparison | CompareObjectMemoryDirect (const PObject &obj) const |
| Determine the byte wise comparison of two objects. More...
|
|
bool | operator== (const PObject &obj) const |
| Compare the two objects. More...
|
|
bool | operator!= (const PObject &obj) const |
| Compare the two objects. More...
|
|
bool | operator< (const PObject &obj) const |
| Compare the two objects. More...
|
|
bool | operator> (const PObject &obj) const |
| Compare the two objects. More...
|
|
bool | operator<= (const PObject &obj) const |
| Compare the two objects. More...
|
|
bool | operator>= (const PObject &obj) const |
| Compare the two objects. More...
|
|
virtual void | ReadFrom (istream &strm) |
| Input the contents of the object from the stream. More...
|
|
|
|
static PString | GetOSClass () |
| Get the class of the operating system the process is running on, eg "unix". More...
|
|
static PString | GetOSName () |
| Get the name of the operating system the process is running on, eg "Linux". More...
|
|
static PString | GetOSHardware () |
| Get the hardware the process is running on, eg "sparc". More...
|
|
static PString | GetOSVersion () |
| Get the version of the operating system the process is running on, eg "2.0.33". More...
|
|
static bool | IsOSVersion (unsigned major, unsigned minor=0, unsigned build=0) |
| See if operating system is later than the version specified. More...
|
|
static PDirectory | GetOSConfigDir () |
| Get the configuration directory of the operating system the process is running on, eg "/etc" for Unix, "c:\windows" for Win95 or "c:\winnt\system32\drivers\etc" for NT. More...
|
|
static PString | GetLibVersion () |
| Get the version of the PTLib library the process is running on, eg "2.5beta3". More...
|
|
static bool | WaitAndDelete (PThread *&thread, const PTimeInterval &maxWait=10000, PMutex *mutex=NULL, bool lock=true) |
| Wait for thread termination and delete object. More...
|
|
static void | Sleep (const PTimeInterval &delay) |
| Suspend the current thread for the specified amount of time. More...
|
|
static PString | GetThreadName (PThreadIdentifier id) |
| Get the name of the thread. More...
|
|
static PString | GetCurrentThreadName () |
| Get the current threads name. More...
|
|
static PString | GetIdentifiersAsString (PThreadIdentifier tid, PUniqueThreadIdentifier uid) |
| Convert to thread identifers as a string. More...
|
|
static void | GetTimes (std::list< Times > ×) |
|
static void | GetTimes (std::set< Times > ×) |
|
static int | GetPercentageCPU (Times &previousTimes, const PTimeInterval &period=PTimeInterval(0, 1), PThreadIdentifier id=PNullThreadIdentifier) |
| Calculate the percentage CPU used over a period of time. More...
|
|
static unsigned | GetNumProcessors () |
| Get number of processors, or processor cores, this machine has available. More...
|
|
static PThread * | Current () |
| Get the currently running thread object instance. More...
|
|
static void | Yield () |
| Yield to another thread without blocking. More...
|
|
static PThread * | Create (const PNotifier ¬ifier, INT parameter=0, AutoDeleteFlag deletion=AutoDeleteThread, Priority priorityLevel=NormalPriority, const PString &threadName=PString::Empty(), PINDEX stackSize=0) |
| Create a simple thread executing the specified notifier. More...
|
|
static PThread * | Create (const PNotifier ¬ifier, const PString &threadName) |
|
static __inline void | CopyTraceContextIdentifier (PObject &to, const PObject &from) |
|
static __inline void | CopyTraceContextIdentifier (PObject &to, const PObject *from) |
|
static __inline void | CopyTraceContextIdentifier (PObject *to, const PObject &from) |
|
static __inline void | CopyTraceContextIdentifier (PObject *to, const PObject *from) |
|
static __inline const char * | Class () |
|
static __inline const PObject * | PTraceObjectInstance (const char *) |
|
static __inline const PObject * | PTraceObjectInstance (const PObject *obj) |
|
template<typename T > |
static Comparison | Compare2 (T v1, T v2) |
| Compare two types, returning Comparison type. More...
|
|
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size) |
| Internal function caled from CompareObjectMemoryDirect() More...
|
|
|
void | Startup () |
| Start up all items registered with PProcessStartupFactory. More...
|
|
bool | GetAllThreadIdentifiers (std::vector< PThreadIdentifier > &identifiers) |
| Return the operating system thread identifiers of all threads. More...
|
|
PThread * | GetThread (PThreadIdentifier threadId) const |
| Return the thread for the operating system thread identifier. More...
|
|
virtual void | OnThreadStart (PThread &thread) |
| Callback for when a thread is started by the PTLib system. More...
|
|
virtual void | OnThreadEnded (PThread &thread) |
| Callback for when a thread is ended if wqas started in the PTLib system. More...
|
|
virtual bool | OnInterrupt (bool terminating) |
| Callback for when a ^C (SIGINT), hangup (SIGHUP) or termination request (SIGTERM) is received by process. More...
|
|
void | SetTerminationValue (int value) |
| Set the termination value for the process. More...
|
|
int | GetTerminationValue () const |
| Get the termination value for the process. More...
|
|
PArgList & | GetArguments () |
| Get the programme arguments. More...
|
|
virtual const PString & | GetManufacturer () const |
| Get the name of the manufacturer of the software. More...
|
|
virtual const PString & | GetName () const |
| Get the name of the process. More...
|
|
virtual PString | GetVersion (PBoolean full=true) const |
| Get the version of the software. More...
|
|
const PFilePath & | GetFile () const |
| Get the processes executable image file path. More...
|
|
PProcessIdentifier | GetProcessID () const |
| Get the platform dependent process identifier for the process. More...
|
|
bool | IsMultipleInstance () const |
| Indicate if this is the second, or more, instance of this executable. More...
|
|
PTime | GetStartTime () const |
| Return the time at which the program was started. More...
|
|
void | GetMemoryUsage (MemoryUsage &usage) const |
| Get process memory suage. More...
|
|
| PPROFILE_EXCLUDE (bool GetProcessTimes(Times ×) const ) |
|
| PPROFILE_EXCLUDE (static bool GetSystemTimes(Times ×)) |
|
PString | GetUserName () const |
| Get the effective user name of the owner of the process, eg "root" etc. More...
|
|
PBoolean | SetUserName (const PString &username, PBoolean permanent=false) |
| Set the effective owner of the process. More...
|
|
PDirectory | GetHomeDirectory () const |
| Get the "home" directory for the logged in user. More...
|
|
PString | GetGroupName () const |
| Get the effective group name of the owner of the process, eg "root" etc. More...
|
|
PBoolean | SetGroupName (const PString &groupname, PBoolean permanent=false) |
| Set the effective group of the process. More...
|
|
int | GetMaxHandles () const |
| Get the maximum file handle value for the process. More...
|
|
PBoolean | SetMaxHandles (int newLimit) |
| Set the maximum number of file handles for the process. More...
|
|
virtual PString | GetConfigurationFile () |
| Get the default file to use in PConfig instances. More...
|
|
void | SetConfigurationPath (const PString &path) |
| Set the default file or set of directories to search for use in PConfig. More...
|
|
static PProcess & | Current () |
| Get the current processes object instance. More...
|
|
static PBoolean | IsInitialised () |
| Determine if the current processes object instance has been initialised. More...
|
|
static PProcessIdentifier | GetCurrentProcessID () |
| Get the platform dependent process identifier for the currentprocess. More...
|
|
virtual void | AddRunTimeSignalHandlers (const int *signals=NULL) |
| Add all the C run-time signal handlers. More...
|
|
virtual void | RemoveRunTimeSignalHandlers () |
| Remove all the C run-time signal handlers. More...
|
|
virtual void | AsynchronousRunTimeSignal (int signal, PProcessIdentifier source) |
| Asynchronous C run-time signal handler, direct callback from OS. More...
|
|
virtual void | HandleRunTimeSignal (const RunTimeSignalInfo &signalInfo) |
| Synchronous C run-time signal handler, this is executed in the housekeeper thread. More...
|
|
virtual void | HandleRunTimeSignal (int signal) |
|
static const char * | GetRunTimeSignalName (int signal) |
| Get the name of the signal. More...
|
|
This class represents an operating system process.
This is a running "programme" in the context of the operating system. Note that there can only be one instance of a PProcess class in a given programme.
The instance of a PProcess or its GUI descendent PApplication
is usually a static variable created by the application writer. This is the initial "anchor" point for all data structures in an application. As the application writer never needs to access the standard system main()
function, it is in the library, the programmes execution begins with the virtual function PThread::Main()
on a process.
void PProcess::SetConfigurationPath |
( |
const PString & |
path | ) |
|
Set the default file or set of directories to search for use in PConfig.
To find the .ini file for use in the default PConfig() instance, this explicit filename is used, or if it is a set of directories separated by either ':' or ';' characters, depending on platform, then the application base name postfixed with ".ini" is searched for through those directories.
The search is actually done when the GetConfigurationFile() is called, this function only sets the internal variable.
Note for Windows, a path beginning with "HKEY_LOCAL_MACHINE\\" or "HKEY_CURRENT_USER\\" will actually search teh system registry for the application base name only (no ".ini") in that folder of the registry.
- Parameters
-
path | Explicit file or set of directories |
Set the effective group of the process.
This is a platform dependent string only provided by platforms that are multi-user.
For unix systems if the groupname may consist exclusively of digits and there is no actual groupname consisting of that string then the numeric uid value is used. For example "0" is the superuser. For the rare occassions where the groups name is the same as their uid, if the groupname field starts with a '#' then the numeric form is forced.
If an empty string is provided then original group that executed the process in the first place (the real group) is set as the effective group.
The permanent flag indicates that the group will not be able to simply change back to the original group as indicated above, ie for unix systems setgid() is used instead of setegid(). This is not necessarily meaningful for all platforms.
- Returns
- true if processes group changed. The most common reason for failure is that the process does not have the privilege to change the effective group.
- Parameters
-
groupname | New group name or gid |
permanent | Flag for if effective or real group |
Set the effective owner of the process.
This is a platform dependent string only provided by platforms that are multi-user.
For unix systems if the username may consist exclusively of digits and there is no actual username consisting of that string then the numeric uid value is used. For example "0" is the superuser. For the rare occassions where the users name is the same as their uid, if the username field starts with a '#' then the numeric form is forced.
If an empty string is provided then original user that executed the process in the first place (the real user) is set as the effective user.
The permanent flag indicates that the user will not be able to simple change back to the original user as indicated above, ie for unix systems setuid() is used instead of seteuid(). This is not necessarily meaningful for all platforms.
- Returns
- true if processes owner changed. The most common reason for failure is that the process does not have the privilege to change the effective user.
- Parameters
-
username | New user name or uid |
permanent | Flag for if effective or real user |