我无法在Android平台上通过QProcess运行任何命令。我正在使用Qt库。任何人都可以解释如何从Android平台上的应用程序运行shell命令吗?
QProcess process();
process.execute("ls");
bool finished = process.waitForFinished(-1);
qDebug() << "End : " << finished << " Output : " << process.errorString();
如果我没有指定超时,则该过程无法完成。当我指定超时时,process.waitForFinished()返回false,比如10000毫秒。
答案 0 :(得分:5)
您的示例代码有问题,无法在任何平台上运行!
ls
命令不是一个严格的命令!此命令构建为shell程序,例如bash
。
您的代码中的另一个错误是QProcess::execute
是static function。
所以最后一行不会对你试图开始的过程产生影响。
所以你的代码应该是这样的:
QProcess process;
process.start("bash", QStringList() << "-c" << "ls");
bool finished = process.waitForFinished(-1);
答案 1 :(得分:0)
您正在使用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");