📄 pprocess.h
字号:
/** Get the name of the thread. Thread names are a optional debugging aid. @return current thread name. */ virtual PString GetThreadName() const; /** Change the name of the thread. Thread names are a optional debugging aid. @return current thread name. */ virtual void SetThreadName( const PString & name /// New name for the thread. ); //@} /**@name Process information functions */ //@{ /**Get the current processes object instance. The {\it current process} is the one the application is running in. @return pointer to current process instance. */ static PProcess & Current(); /**Determine if the current processes object instance has been initialised. If this returns TRUE it is safe to use the PProcess::Current() function. @return TRUE if process class has been initialised. */ static BOOL IsInitialised(); /**Set the termination value for the process. The termination value is an operating system dependent integer which indicates the processes termiantion value. It can be considered a "return value" for an entire programme. */ void SetTerminationValue( int value /// Value to return a process termination status. ); /**Get the termination value for the process. The termination value is an operating system dependent integer which indicates the processes termiantion value. It can be considered a "return value" for an entire programme. @return integer termination value. */ int GetTerminationValue() const; /**Get the programme arguments. Programme arguments are a set of strings provided to the programme in a platform dependent manner. @return argument handling class instance. */ PArgList & GetArguments(); /**Get the name of the manufacturer of the software. This is used in the default "About" dialog box and for determining the location of the configuration information as used by the #PConfig# class. The default for this information is the empty string. @return string for the manufacturer name eg "Equivalence". */ virtual const PString & GetManufacturer() const; /**Get the name of the process. This is used in the default "About" dialog box and for determining the location of the configuration information as used by the #PConfig# class. The default is the title part of the executable image file. @return string for the process name eg "MyApp". */ virtual const PString & GetName() const; /**Get the version of the software. This is used in the default "About" dialog box and for determining the location of the configuration information as used by the #PConfig# class. If the #full# parameter is TRUE then a version string built from the major, minor, status and build veriosn codes is returned. If FALSE then only the major and minor versions are returned. The default for this information is "1.0". @return string for the version eg "1.0b3". */ virtual PString GetVersion( BOOL full = TRUE /// TRUE for full version, FALSE for short version. ) const; /**Get the processes executable image file path. @return file path for program. */ const PFilePath & GetFile() const; /**Get the platform dependent process identifier for the process. This is an arbitrary (and unique) integer attached to a process by the operating system. @return Process ID for process. */ DWORD GetProcessID() const; /**Get the effective user name of the owner of the process, eg "root" etc. This is a platform dependent string only provided by platforms that are multi-user. Note that some value may be returned as a "simulated" user. For example, in MS-DOS an environment variable @return user name of processes owner. */ PString GetUserName() const; /**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. @return 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. */ BOOL SetUserName( const PString & username, /// New user name or uid BOOL permanent = FALSE /// Flag for if effective or real user ); /**Get the effective group name of the owner of the process, eg "root" etc. This is a platform dependent string only provided by platforms that are multi-user. Note that some value may be returned as a "simulated" user. For example, in MS-DOS an environment variable @return group name of processes owner. */ PString GetGroupName() const; /**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. @return 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. */ BOOL SetGroupName( const PString & groupname, /// New group name or gid BOOL permanent = FALSE /// Flag for if effective or real group ); /**Get the maximum file handle value for the process. For some platforms this is meaningless. @return user name of processes owner. */ int GetMaxHandles() const; /**Set the maximum number of file handles for the process. For unix systems the user must be run with the approriate privileges before this function can set the value above the system limit. For some platforms this is meaningless. @return TRUE if successfully set the maximum file hadles. */ BOOL SetMaxHandles( int newLimit /// New limit on file handles );#ifdef P_CONFIG_FILE /**Get the default file to use in PConfig instances. */ virtual PString GetConfigurationFile();#endif /**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, 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. */ void SetConfigurationPath( const PString & path /// Explicit file or set of directories ); //@} /**@name Operating System information functions */ //@{ /**Get the class of the operating system the process is running on, eg "unix". @return String for OS class. */ static PString GetOSClass(); /**Get the name of the operating system the process is running on, eg "Linux". @return String for OS name. */ static PString GetOSName(); /**Get the hardware the process is running on, eg "sparc". @return String for OS name. */ static PString GetOSHardware(); /**Get the version of the operating system the process is running on, eg "2.0.33". @return String for OS version. */ static PString GetOSVersion(); /**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. @return Directory for OS configuration files. */ static PDirectory GetOSConfigDir(); //@} PTimerList * GetTimerList(); /* Get the list of timers handled by the application. This is an internal function and should not need to be called by the user. @return list of timers. */ static void PreInitialise( int argc, // Number of program arguments. char ** argv, // Array of strings for program arguments. char ** envp // Array of string for the system environment ); /* Internal initialisation function called directly from #_main()#. The user should never call this function. */ static void PreShutdown(); /* Internal shutdown function called directly from the ~PProcess #_main()#. The user should never call this function. */ virtual int _main(void * arg = NULL); // Main function for process, called from real main after initialisation PTime GetStartTime() const; /* return the time at which the program was started */ private: void Construct(); // Member variables static int p_argc; static char ** p_argv; static char ** p_envp; // main arguments int terminationValue; // Application return value PString manufacturer; // Application manufacturer name. PString productName; // Application executable base name from argv[0] WORD majorVersion; // Major version number of the product WORD minorVersion; // Minor version number of the product CodeStatus status; // Development status of the product WORD buildNumber; // Build number of the product PFilePath executableFile; // Application executable file from argv[0] (not open) PStringList configurationPaths; // Explicit file or set of directories to find default PConfig PArgList arguments; // The list of arguments PTimerList timers; // List of active timers in system PTime programStartTime; // time at which process was intantiated, i.e. started int maxHandles; // Maximum number of file handles process can open. friend class PThread;// Include platform dependent part of class#ifdef _WIN32#include "msos/ptlib/pprocess.h"#else#include "unix/ptlib/pprocess.h"#endif};/* * one instance of this class (or any descendants) will be instantiated * via PGenericFactory<PProessStartup> one "main" has been started, and then * the OnStartup() function will be called. The OnShutdown function will * be called after main exits, and the instances will be destroyed if they * are not singletons */class PProcessStartup : public PObject{ PCLASSINFO(PProcessStartup, PObject) public: virtual void OnStartup() { } virtual void OnShutdown() { }};typedef PFactory<PProcessStartup> PProcessStartupFactory;// using an inline definition rather than a #define crashes gcc 2.95. Go figure#define P_DEFAULT_TRACE_OPTIONS ( PTrace::Blocks | PTrace::Timestamp | PTrace::Thread | PTrace::FileAndLine )template <unsigned _level, unsigned _options = P_DEFAULT_TRACE_OPTIONS >class PTraceLevelSetStartup : public PProcessStartup{ public: void OnStartup() { PTrace::Initialise(_level, NULL, _options); }};#endif// End Of File ///////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -