gpt4 book ai didi

c++ - Qt QFile/QTextStream,无法解析/proc/stat

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:01 25 4
gpt4 key购买 nike

我在使用 Qt 解析 /proc/stat 时遇到问题。

我遇到的问题是 QFile 声明 /proc/stat 是打开的 可读的。

当尝试单独读取行时,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 是一个很小的文件,没有变大的风险。只需对 QByteArray 执行 readAll()(没有 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() 的方法并且它有效。

关于c++ - Qt QFile/QTextStream,无法解析/proc/stat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16039866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com