From 6a0e50e24df9b0ef5f5f5c4bfbf7a66b87196a83 Mon Sep 17 00:00:00 2001 From: Bruce Dubbs Date: Mon, 16 Oct 2023 18:00:35 -0500 Subject: [PATCH] Keep files open while running. Instead of opening and closing files in /proc, just keep them open and seek to the beginning each time their data is needed. Close the files when exiting. --- .gitignore | 1 + src/sysmon-qt | Bin 207328 -> 0 bytes src/sysmon-qt.cpp | 54 +++++++++++++++++++++++++++------------------- src/sysmon-qt.h | 44 +++++++++++++++++++++---------------- 4 files changed, 58 insertions(+), 41 deletions(-) delete mode 100755 src/sysmon-qt diff --git a/.gitignore b/.gitignore index 234639a..94777a1 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ moc* *Make* +make-release.sh src/sysmon-qt *.sav* notes diff --git a/src/sysmon-qt b/src/sysmon-qt deleted file mode 100755 index 83187365d179f82418dea802b3f85b18ef434dd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207328 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 Hc&z+Czq|W9 diff --git a/src/sysmon-qt.cpp b/src/sysmon-qt.cpp index 2ca27a6..308bff6 100644 --- a/src/sysmon-qt.cpp +++ b/src/sysmon-qt.cpp @@ -1,12 +1,10 @@ #include #include #include -#include #include #include #include #include -// #include #include "sysmon-qt.h" #include "sm_config.h" @@ -36,6 +34,19 @@ sysmon_qt::sysmon_qt() font_size = settings.value( "fontSize" , 12 ).toInt(); font_normal = QFont( font_family, font_size ); + // Files + fUptime = new QFile( "/proc/uptime" ); + fUptime ->open( QIODevice::ReadOnly | QIODevice::Text); + + fLoadAvg = new QFile( "/proc/loadavg" ); + fLoadAvg->open( QIODevice::ReadOnly | QIODevice::Text); + + fMemInfo = new QFile( "/proc/meminfo" ); + fMemInfo->open( QIODevice::ReadOnly | QIODevice::Text); + + fStat = new QFile( "/proc/stat" ); + fStat ->open( QIODevice::ReadOnly | QIODevice::Text); + // Set up palettes set_palettes(); @@ -98,6 +109,11 @@ sysmon_qt::~sysmon_qt() settings.setValue( "positionX", QString::number( position.x() ) ); settings.setValue( "positionY", QString::number( position.y() ) ); settings.sync(); + + if ( fUptime ->isOpen() ) fUptime ->close(); + if ( fLoadAvg->isOpen() ) fLoadAvg->close(); + if ( fMemInfo->isOpen() ) fMemInfo->close(); + if ( fStat ->isOpen() ) fStat ->close(); } void sysmon_qt::setup_all() @@ -178,12 +194,10 @@ void sysmon_qt::update_uptime( void ) if ( lbl_uptime == nullptr ) return; if ( tick % 60 != 0 ) return; // Update once a minute - QFile file( "/proc/uptime" ); - file.open( QIODevice::ReadOnly | QIODevice::Text); - QByteArray ba = file.readLine(); - file.close(); + fUptime->seek( 0 ); + QByteArray baUptime = fUptime->readLine(); - QString lineString = QString( ba ); + QString lineString = QString( baUptime ); QString upSecs = lineString.left( lineString.indexOf(".") ); uint secs = upSecs.toInt(); @@ -204,7 +218,8 @@ void sysmon_qt::setup_cpuLoad() bool useCPU = settings.value( "useCPU", true ).toBool(); bool useCPUbar = settings.value( "useCPUbar", true ).toBool(); - lbl_cpu = nullptr; + lbl_cpu = nullptr; + lbl_loads = nullptr; if ( ! useCPU && ! useCPUbar ) return; @@ -247,12 +262,10 @@ void sysmon_qt::update_cpu( void ) if ( lbl_loads != nullptr ) { - QFile file( "/proc/loadavg" ); - file.open( QIODevice::ReadOnly | QIODevice::Text); - QByteArray ba2 = file.readLine(); - file.close(); + fLoadAvg->seek( 0 ); + QByteArray ba = fLoadAvg->readLine(); - QString lineString = QString( ba2 ); + QString lineString = QString( ba ); QStringList loadList = lineString.split( QLatin1Char(' ') ); QString CPU_loads = loadList[0] + " " + loadList[1] + " " + @@ -297,9 +310,8 @@ void sysmon_qt::update_memory( void ) if ( lbl_memory == nullptr ) return; if ( tick % memory_refresh != 0 ) return; - QFile file( "/proc/meminfo" ); - file.open( QIODevice::ReadOnly | QIODevice::Text); - QTextStream textStream( &file ); + fMemInfo->seek( 0 ); + QTextStream textStream( fMemInfo ); QString MemTotal; QString MemAvailable; @@ -314,7 +326,6 @@ void sysmon_qt::update_memory( void ) break; } } - file.close(); QRegularExpression re( "\\d+" ); QRegularExpressionMatch match = re.match( MemTotal ); @@ -591,7 +602,6 @@ void sysmon_qt::update_cpu_percentage( void ) // Could possibly do it every cpu_refresh time (3 seconds for now) static qint64 previousJiffiesWork; static qint64 previousJiffiesTotal; - static QFile* file; QString cpu; // Not really used -- always "cpu" qint64 user, // jiffies @@ -602,16 +612,16 @@ void sysmon_qt::update_cpu_percentage( void ) // First time through only if ( previousJiffiesWork == 0 ) { - file = new QFile( "/proc/stat" ); - file->open( QIODevice::ReadOnly | QIODevice::Text); - QTextStream stream( file ); + fStat->seek( 0 ); + QTextStream stream( fStat ); stream >> cpu >> user >> nice >> system >> idle; + previousJiffiesWork = user + nice + system; previousJiffiesTotal = previousJiffiesWork + idle; return; } - QTextStream stream( file ); + QTextStream stream( fStat ); stream.seek( 0 ); // Just read the first line each time stream >> cpu >> user >> nice >> system >> idle; diff --git a/src/sysmon-qt.h b/src/sysmon-qt.h index 5b44e10..402e28d 100644 --- a/src/sysmon-qt.h +++ b/src/sysmon-qt.h @@ -2,6 +2,7 @@ #define SYSMONQT_H #include +#include #include #include #include @@ -29,25 +30,30 @@ public slots: QLabel* textlabel( const QString&, int = -1, int = QFont::Normal ); QLabel* banner ( const QString&, int = 0, int = QFont::Bold ); - int tick = 0; // tick every second - int cpu_refresh = 3; - int memory_refresh = 3; - int temp_refresh = 5; - int tempsCount; - int cpuPercentage; - bool pauseUpdate = false; - bool mFrame = false; // turn frame on and off - bool pauseTempUpdate = false; // turn temperature update on and off - QString TZ; // time zone - QPoint position; // location of widget - - QLabel* lbl_hostname; - QLabel* lbl_time; // time of day - QLabel* lbl_date; - QLabel* lbl_uptime; - QLabel* lbl_cpu; // title - QLabel* lbl_loads; // label for memory - QLabel* lbl_memory; // title + int tick = 0; // tick every second + int cpu_refresh = 3; + int memory_refresh = 3; + int temp_refresh = 5; + int tempsCount; + int cpuPercentage; + bool pauseUpdate = false; + bool mFrame = false; // turn frame on and off + bool pauseTempUpdate = false; // turn temperature update on and off + QString TZ; // time zone + QPoint position; // location of widget + + QLabel* lbl_hostname; + QLabel* lbl_time; // time of day + QLabel* lbl_date; + QLabel* lbl_uptime; + QLabel* lbl_cpu; // title + QLabel* lbl_loads; // label for memory + QLabel* lbl_memory; // title + + QFile* fUptime; + QFile* fLoadAvg; + QFile* fMemInfo; + QFile* fStat; QProgressBar* memory; QProgressBar* load;