📄 pprocess.h
字号:
/*
* pprocess.h
*
* Operating System process (running program) class.
*
* Portable Windows Library
*
* Copyright (c) 1993-1998 Equivalence Pty. Ltd.
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Portable Windows Library.
*
* The Initial Developer of the Original Code is Equivalence Pty. Ltd.
*
* Portions are Copyright (C) 1993 Free Software Foundation, Inc.
* All Rights Reserved.
*
* Contributor(s): ______________________________________.
*
* $Log: pprocess.h,v $
* Revision 1.1 2006/08/04 03:34:09 joegenbaclor
* Moved pwlib and OPAL headers to root include directory
*
* Revision 1.1 2006/06/29 04:17:46 joegenbaclor
* *** empty log message ***
*
* Revision 1.31 2005/07/21 00:09:08 csoutheren
* Added workaround for braindead behaviour of pthread_kill
* Thanks to "martin martin" <acevedoma@hotmail.com>
*
* Revision 1.30 2005/06/02 19:25:18 dsandras
* Applied patch from Miguel Rodr韌uez P閞ez <miguelrp @ gmail.com> (migras) to fix compilation with gcc 4.0.1.
*
* Revision 1.29 2004/05/23 21:11:39 ykiryanov
* Made BeOS PProcess members same as on Linux and Mac
*
* Revision 1.28 2004/04/02 03:37:07 ykiryanov
* Added timerChangePipe, to make code better
*
* Revision 1.27 2003/09/17 01:18:03 csoutheren
* Removed recursive include file system and removed all references
* to deprecated coooperative threading support
*
* Revision 1.26 2002/10/17 12:57:24 robertj
* Added ability to increase maximum file handles on a process.
*
* Revision 1.25 2002/10/10 04:43:44 robertj
* VxWorks port, thanks Martijn Roest
*
* Revision 1.24 2002/09/16 01:08:59 robertj
* Added #define so can select if #pragma interface/implementation is used on
* platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan.
*
* Revision 1.23 2002/07/15 06:40:00 craigs
* Added function to allow raising of per-process file handle limit
*
* Revision 1.22 2001/08/11 07:57:30 rogerh
* Add Mac OS Carbon changes from John Woods <jfw@jfwhome.funhouse.com>
*
* Revision 1.21 2001/05/22 12:49:32 robertj
* Did some seriously wierd rewrite of platform headers to eliminate the
* stupid GNU compiler warning about braces not matching.
*
* Revision 1.20 2001/03/20 06:44:25 robertj
* Lots of changes to fix the problems with terminating threads that are I/O
* blocked, especially when doing orderly shutdown of service via SIGTERM.
*
* Revision 1.19 2001/03/14 01:16:11 robertj
* Fixed signals processing, now uses housekeeping thread to handle signals
* synchronously. This also fixes issues with stopping PServiceProcess.
*
* Revision 1.18 1999/03/02 05:41:58 robertj
* More BeOS changes
*
* Revision 1.17 1998/12/15 12:43:43 robertj
* Fixed signal handling so can now ^C a pthread version.
*
* Revision 1.16 1998/11/30 22:06:59 robertj
* New directory structure.
*
* Revision 1.15 1998/10/18 14:29:42 robertj
* Renamed argv/argc to eliminate accidental usage.
*
* Revision 1.14 1998/10/16 11:27:58 robertj
* Added access to argc/argv.
*
* Revision 1.13 1998/09/24 04:11:46 robertj
* Added open software license.
*
* Revision 1.12 1998/05/30 13:30:44 robertj
* Fixed shutdown problems with PConfig caching.
*
* Revision 1.11 1998/03/29 10:42:52 craigs
* Made PConfig thread safe
*
* Revision 1.10 1998/03/26 04:55:53 robertj
* Added PMutex and PSyncPoint
*
* Revision 1.9 1998/01/04 08:13:32 craigs
* Removed extern reference to PProcessInstance
*
* Revision 1.8 1998/01/03 23:06:32 craigs
* Added PThread support
*
* Revision 1.7 1996/10/31 10:28:38 craigs
* Removed PXOnSigxxx routines
*
* Revision 1.6 1996/09/21 05:42:12 craigs
* Changes for new common files, PConfig changes and signal handling
*
* Revision 1.5 1996/08/03 12:08:19 craigs
* Changed for new common directories
*
* Revision 1.4 1996/06/10 11:03:23 craigs
* Changed include name
*
* Revision 1.3 1996/04/15 10:50:48 craigs
* Last revision prior to release of MibMaster
*
* Revision 1.2 1996/01/26 11:06:31 craigs
* Added signal handlers
*
* Revision 1.1 1995/01/23 18:43:27 craigs
* Initial revision
*
* Revision 1.1 1994/04/12 08:31:05 robertj
* Initial revision
*
*/
PDICTIONARY(PXFdDict, POrdinalKey, PThread);
///////////////////////////////////////////////////////////////////////////////
// PProcess
public:
friend class PApplication;
friend class PServiceProcess;
friend void PXSignalHandler(int);
friend class PHouseKeepingThread;
~PProcess();
PDirectory PXGetHomeDir ();
char ** PXGetArgv() const { return p_argv; }
int PXGetArgc() const { return p_argc; }
char ** PXGetEnvp() const { return p_envp; }
friend void PXSigHandler(int);
virtual void PXOnSignal(int);
virtual void PXOnAsyncSignal(int);
void PXCheckSignals();
static void PXShowSystemWarning(PINDEX code);
static void PXShowSystemWarning(PINDEX code, const PString & str);
protected:
void CommonConstruct();
void CommonDestruct();
virtual void _PXShowSystemWarning(PINDEX code, const PString & str);
int pxSignals;
protected:
void CreateConfigFilesDictionary();
PAbstractDictionary * configFiles;
#if defined(P_PTHREADS) || defined(P_MAC_MPTHREADS) || defined (__BEOS__)
public:
void SignalTimerChange();
BOOL PThreadKill(pthread_t id, unsigned signal);
protected:
PDICTIONARY(ThreadDict, POrdinalKey, PThread);
ThreadDict activeThreads;
PMutex threadMutex;
int timerChangePipe[2];
class PHouseKeepingThread * housekeepingThread;
#elif defined(VX_TASKS)
public:
void SignalTimerChange();
private:
PDICTIONARY(ThreadDict, POrdinalKey, PThread);
ThreadDict activeThreads;
PMutex activeThreadMutex;
PLIST(ThreadList, PThread);
ThreadList autoDeleteThreads;
PMutex deleteThreadMutex;
PDECLARE_CLASS(HouseKeepingThread, PThread)
public:
HouseKeepingThread();
void Main();
PSyncPoint breakBlock;
};
friend class HouseKeepingThread;
HouseKeepingThread * houseKeeper;
// Thread for doing timers, thread clean up etc.
friend PThread * PThread::Current();
friend int PThread::ThreadFunction(void * thread);
#else
public:
void PXAbortIOBlock(int fd);
protected:
PXFdDict ioBlocks[3];
#endif
// End Of File ////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -