[英]Qt QFile/QTextStream, unable to parse /proc/stat
我在使用Qt解析/proc/stat
时遇到问题。
我遇到的问题是QFile
状态/proc/stat
既开放又可读。
尝试分别读取QTextStream
, QTextStream
显然指示流已完成,但是我知道通过运行cat /proc/stat
并非如此。
while
循环中的任何代码均未执行。 有什么建议吗?
int UsageStatistics::handle_timeout(const ACE_Time_Value& currentTime, const void* param) {
INFO("Handling timeout\n");
QFile file(QString("/proc/stat"));
if (!file.open(QIODevice::ReadOnly)) {
ERROR("Unable to open file %s, aborting\n", file.fileName().toStdString().c_str());
return false;
}
if (!file.isReadable()) {
ERROR("Unable to read file %s, aborting\n", file.fileName().toStdString().c_str());
return false;
}
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
INFO("%s\n", line.toStdString().c_str());
/// processing
}
file.close();
return true;
}
/ proc / stat是一个很小的文件,没有太大的风险。 只需将readAll()放入QByteArray(不进行atEnd()检查,您已经完成了isReadable()),然后将QTextStream指向字节数组(如果要使用相同的方式进行解析)。
QFile file(QString("/proc/stat"));
if (!file.open(QIODevice::ReadOnly)) {
qDebug("Unable to open file %s, aborting\n",
qPrintable(file.fileName()));
ui->plainTextEdit->appendPlainText("Error can't open");
return;
}
if (!file.isReadable()) {
qDebug("Unable to read file %s, aborting\n",
qPrintable(file.fileName()));
ui->plainTextEdit->appendPlainText("Error can't read");
return;
}
QByteArray contents = file.readAll();
QTextStream in(&contents);
while (!in.atEnd()) {
QString line = in.readLine();
qDebug("Read: %s\n", qPrintable(line));
ui->plainTextEdit->appendPlainText(line);
}
ui->plainTextEdit->appendPlainText("Done reading.");
file.close();
我只是验证了我的系统是否与您的系统相同,然后尝试了这种基于readAll()的方法,并且该方法有效。
您正在使用cpuRegex.exactMatch
,它正在寻找完全匹配整行的方法。 并且您正在寻找的那条线还有其他信息。 尝试改用cpuRegex.indexIn(line) == 0
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.