⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pprocess.h

📁 pwlib源码库
💻 H
📖 第 1 页 / 共 2 页
字号:
    /** 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 + -