linux qt QProcess pkexec打开root权限/bin/bash,交互式输入指令启动图形界面程序
示例程序#ifndef TERMINALCONSOLE_H#define TERMINALCONSOLE_H#include <QObject>#include <QProcess>class TerminalConsole : public QObject{Q_OBJECTpublic:explicit TerminalConsole(QObject *parent =
·
示例程序
#ifndef TERMINALCONSOLE_H
#define TERMINALCONSOLE_H
#include <QObject>
#include <QProcess>
class TerminalConsole : public QObject
{
Q_OBJECT
public:
explicit TerminalConsole(QObject *parent = nullptr);
void start();
signals:
public slots:
void onReadStandardOutput();
void onReadStandardError();
private:
QProcess *process;
};
#endif // TERMINALCONSOLE_H
#include "terminalconsole.h"
#include <QDebug>
TerminalConsole::TerminalConsole(QObject *parent) : QObject(parent)
{
process = new QProcess(parent);
connect(process , SIGNAL(readyReadStandardOutput()) , this , SLOT(onReadStandardOutput()));
connect(process , SIGNAL(readyReadStandardError()) , this , SLOT(onReadStandardError()));
process->start("pkexec /bin/bash");
process->waitForStarted();
QStringList env = QProcess::systemEnvironment();
for(int i=0;i<env.size();i++){
QString e = env.at(i);
process->write(QString("export %1\n").arg(e).toUtf8());
}
process->write("export DISPLAY=:0\n");
process->write("export XAUTHORITY=/home/yeqiang/.Xauthority\n");
}
void TerminalConsole::start()
{
process->write("filezilla\n");
}
void TerminalConsole::onReadStandardOutput()
{
QString outStr = QString::fromUtf8(process->readAllStandardOutput().data());
qDebug() << QString("stdout: %1").arg(outStr);
}
void TerminalConsole::onReadStandardError()
{
QString errStr = QString::fromUtf8(process->readAllStandardError().data());
qDebug() << QString("stderr: %1").arg(errStr);
}

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)