[英]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.