mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 13:10:19 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef NON_INHERITING_PROCESS_HPP__
 | |
| #define NON_INHERITING_PROCESS_HPP__
 | |
| 
 | |
| #include <QProcess>
 | |
| #include "pimpl_h.hpp"
 | |
| 
 | |
| class QObject;
 | |
| 
 | |
| //
 | |
| // class NonInheritingProcess - Manage a process without it inheriting
 | |
| //                              all inheritable handles
 | |
| //
 | |
| //   On MS  Windows QProcess  creates sub-processes which  inherit all
 | |
| // inheritable  handles, and  handles  on Windows  are inheritable  by
 | |
| // default. This can cause the  lifetime of objects to be unexpectedly
 | |
| // extended, which in turn can cause unexpected errors. The motivation
 | |
| // for this class  was implementing log file rotation  using the Boost
 | |
| // log library.  The  current log file's handle gets  inherited by any
 | |
| // long  running sub-process  started by  QProcess and  that causes  a
 | |
| // sharing  violation  when  attempting  to rename  the  log  file  on
 | |
| // rotation, even though  the log library closes the  current log file
 | |
| // before trying to rename it.
 | |
| //
 | |
| class NonInheritingProcess
 | |
|   : public QProcess
 | |
| {
 | |
| public:
 | |
|   NonInheritingProcess (QObject * parent = nullptr);
 | |
|   ~NonInheritingProcess ();
 | |
| 
 | |
| private:
 | |
|   class impl;
 | |
|   pimpl<impl> m_;
 | |
| };
 | |
| #endif
 |