mirror of
https://github.com/quickshell-mirror/quickshell.git
synced 2026-10-28 02:55:05 +00:00
io/process: null stdio channels in detached processes
This commit is contained in:
3 files changed
+17
-1
No files matched your search
@@ -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(
|
||||
|
||||
Reference in new issue
Block a user