forked from quickshell/quickshell
		
	io/process: null stdio channels in detached processes
This commit is contained in:
		
							parent
							
								
									b011cd9d33
								
							
						
					
					
						commit
						de25787451
					
				
					 3 changed files with 17 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -263,7 +263,6 @@ void QuickshellGlobal::execDetached(const qs::io::process::ProcessContext& conte
 | 
			
		|||
	auto args = context.command.sliced(1);
 | 
			
		||||
 | 
			
		||||
	QProcess process;
 | 
			
		||||
 | 
			
		||||
	qs::io::process::setupProcessEnvironment(&process, context.clearEnvironment, context.environment);
 | 
			
		||||
 | 
			
		||||
	if (!context.workingDirectory.isEmpty()) {
 | 
			
		||||
| 
						 | 
				
			
			@ -272,6 +271,14 @@ void QuickshellGlobal::execDetached(const qs::io::process::ProcessContext& conte
 | 
			
		|||
 | 
			
		||||
	process.setProgram(cmd);
 | 
			
		||||
	process.setArguments(args);
 | 
			
		||||
 | 
			
		||||
	process.setStandardInputFile(QProcess::nullDevice());
 | 
			
		||||
 | 
			
		||||
	if (context.unbindStdout) {
 | 
			
		||||
		process.setStandardOutputFile(QProcess::nullDevice());
 | 
			
		||||
		process.setStandardErrorFile(QProcess::nullDevice());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	process.startDetached();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -249,6 +249,11 @@ void Process::startDetached() {
 | 
			
		|||
	this->setupEnvironment(&process);
 | 
			
		||||
	process.setProgram(cmd);
 | 
			
		||||
	process.setArguments(args);
 | 
			
		||||
 | 
			
		||||
	process.setStandardInputFile(QProcess::nullDevice());
 | 
			
		||||
	process.setStandardOutputFile(QProcess::nullDevice());
 | 
			
		||||
	process.setStandardErrorFile(QProcess::nullDevice());
 | 
			
		||||
 | 
			
		||||
	process.startDetached();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,7 @@ class ProcessContext {
 | 
			
		|||
	Q_PROPERTY(QHash<QString, QVariant> environment MEMBER environment WRITE setEnvironment);
 | 
			
		||||
	Q_PROPERTY(bool clearEnvironment MEMBER clearEnvironment WRITE setClearEnvironment);
 | 
			
		||||
	Q_PROPERTY(QString workingDirectory MEMBER workingDirectory WRITE setWorkingDirectory);
 | 
			
		||||
	Q_PROPERTY(bool unbindStdout MEMBER unbindStdout WRITE setUnbindStdout);
 | 
			
		||||
	Q_GADGET;
 | 
			
		||||
	QML_STRUCTURED_VALUE;
 | 
			
		||||
	QML_VALUE_TYPE(processContext);
 | 
			
		||||
| 
						 | 
				
			
			@ -45,6 +46,8 @@ public:
 | 
			
		|||
		this->workingDirectorySet = true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void setUnbindStdout(bool unbindStdout) { this->unbindStdout = unbindStdout; }
 | 
			
		||||
 | 
			
		||||
	QList<QString> command;
 | 
			
		||||
	QHash<QString, QVariant> environment;
 | 
			
		||||
	bool clearEnvironment = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -54,6 +57,7 @@ public:
 | 
			
		|||
	bool environmentSet : 1 = false;
 | 
			
		||||
	bool clearEnvironmentSet : 1 = false;
 | 
			
		||||
	bool workingDirectorySet : 1 = false;
 | 
			
		||||
	bool unbindStdout : 1 = true;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void setupProcessEnvironment(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue