linux - Qt 在终端上运行 shell

标签 linux qt shell

我需要在 mac 中从 Qt 应用程序运行 shell

QString strProcess = "/bin/bash ";
strProcess += (QDir::currentPath() + "/../../../apk_build.sh");
strProcess += " -a " + ui->textEdit_apk->toPlainText();
strProcess += " -o " + ui->textEdit_out->toPlainText();
strProcess += " -c " + ui->textEdit_channel->toPlainText();
QProcess process;
process.execute(strProcess);

这里有一些问题。

问题1:终端无法显示内容信息,我需要查看运行信息。

问题 2:找不到 apktool:找不到命令。如果我在没有Qt应用程序的终端中执行命令,则可以找到apktool(apktool路径:/usr/bin/apktool)。

最佳答案

问题 1 如果您只想保存流程的输出,那么只需设置流程的标准输出即可。

void QProcess::setStandardOutputFile ( const QString & fileName, OpenMode mode = Truncate )

如果你想实时获得输出,那么你必须通过调用 read()、readLine() 函数将你的进程作为标准顺序 I/O 设备来处理。

问题 2 您必须加载用户的环境变量。尝试:

source /etc/profile

关于linux - Qt 在终端上运行 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31960022/

相关文章:

linux - 将变量导出到另一个脚本

java - 您会为共享软件/免费软件桌面应用程序使用什么语言/平台?

linux - OIFS=$IFS; 是什么意思? IFS ="|";在 bash 脚本中

Unix shell 脚本 - 打印范围内的所有可用变量

python - 在无限while循环中在shell脚本中一起运行多个程序

linux - `cat` 模拟以不同的颜色突出显示不同的匹配项

regex - 用 sed 替换匹配的字符串

c - 如何在不打印 C 中的新内容的情况下让终端刷新

c++ - (Qt C++) 将 int 值从对话框发送到 MainWindow?

multithreading - Qt - 关闭被系统级调用阻塞的QThreads