io/process: null stdio channels in detached processes

This commit is contained in:
outfoxxed 2025-07-13 19:48:08 -07:00
parent b011cd9d33
commit de25787451
Signed by untrusted user: outfoxxed
GPG key ID: 4C88A185FB89301E
3 changed files with 17 additions and 1 deletions

View file

@ -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();
}

View file

@ -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(