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