本来想调用echo命令实现休眠,但是发现只在终端输出字符,代码如下:
bool QServer::startProcess(QString )
{
bool started = false;
// if (QFile(procPath).exists())
{
bool started = false;
QScopedPointer<QProcess> p(new QProcess);
p->setStandardInputFile(QProcess::nullDevice());
p->setProcessChannelMode(QProcess::ForwardedChannels);
p->start("echo mem > /sys/power/state");
started = p->waitForStarted();
if (started)
{
QProcess* proc = p.take();
QObject::connect(proc, static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), proc, &QProcess::deleteLater);
}
return started;
}
return started;
}
测试运行,设备没有成功进入休眠,终端输出如下:
//正确应将p->start("echo mem > /sys/power/state")改为如下:
p->start("/bin/sh -c \"echo mem > /sys/power/state\"");