运行 shell 在 Android 平台上通过 QProcess 命令

Run a shell command via QProcess on Android Platform

我无法在 Android 平台上通过 QProcess 运行 任何命令。我正在使用 Qt 库。谁能解释如何从我的 Android 平台上的应用程序 运行 shell 命令?

    QProcess process();

    process.execute("ls");

   bool finished = process.waitForFinished(-1);

   qDebug() <<  "End : " << finished << " Output : " << process.errorString();

如果我不指定超时,该过程不会完成。 process.waitForFinished() returns false 当我指定超时比方说 10000 毫秒。

您正在使用 QProcess::execute(),这是一个静态函数。引用 Qt documentation:“在新进程中启动程序命令,等待它完成”。

那么您的代码中可能发生的情况是:

QProcess process();

process.execute("ls"); // Start "ls" and wait for it to finish
// "ls" has finished
bool finished = process.waitForFinished(-1); // Wait for the process to finish, but there is no process and you could get locked here forever...

有两种方法可以修复您的代码:

QProcess process();

process.start("ls"); // Start "ls" and returns

bool finished = process.waitForFinished(-1);

qDebug() <<  "End : " << finished << " Output : " << process.errorString();

 QProcess::execute("ls");

您的示例代码有问题,无法在任何平台上运行! ls命令不准确!此命令内置于 shell 程序中,例如 bash.

您代码中的另一个错误是 QProcess::executestatic function。 所以最后一行对您尝试启动的进程没有影响。

因此您的代码应如下所示:

QProcess process;
process.start("bash", QStringList() << "-c" << "ls");

bool finished = process.waitForFinished(-1);