diff options
Diffstat (limited to 'src/libs/utils/synchronousprocess.cpp')
-rw-r--r-- | src/libs/utils/synchronousprocess.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/libs/utils/synchronousprocess.cpp b/src/libs/utils/synchronousprocess.cpp index 43a00ef1ee..2d73283695 100644 --- a/src/libs/utils/synchronousprocess.cpp +++ b/src/libs/utils/synchronousprocess.cpp @@ -89,19 +89,27 @@ static Q_LOGGING_CATEGORY(processLog, "qtc.utils.synchronousprocess", QtWarningM // A special QProcess derivative allowing for terminal control. class TerminalControllingProcess : public QProcess { public: - TerminalControllingProcess() = default; + TerminalControllingProcess() + { +#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) && defined(Q_OS_UNIX) + setChildProcessModifier([this]() { maybeSetsid(); }); +#endif + } unsigned flags() const { return m_flags; } void setFlags(unsigned tc) { m_flags = tc; } protected: - void setupChildProcess() override; + inline void maybeSetsid(); +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) && defined(Q_OS_UNIX) + void setupChildProcess() override { maybeSetsid(); } +#endif private: unsigned m_flags = 0; }; -void TerminalControllingProcess::setupChildProcess() +inline void TerminalControllingProcess::maybeSetsid() { #ifdef Q_OS_UNIX // Disable terminal by becoming a session leader. |