diff --git a/app/app.pro b/app/app.pro index 2623b02c6a41c9d284340bb1bcb0768fca1b0bdc..ada7bd9deec962a28bf3daadd0ede1f4a4e30afc 100644 --- a/app/app.pro +++ b/app/app.pro @@ -31,7 +31,8 @@ SOURCES += \ updatable.cpp \ task.cpp \ controller.cpp \ - generalstatus.cpp + generalstatus.cpp \ + service.cpp HEADERS += \ mainwindow.h \ @@ -40,7 +41,8 @@ HEADERS += \ updatable.h \ task.h \ controller.h \ - generalstatus.h + generalstatus.h \ + service.h FORMS += \ mainwindow.ui diff --git a/app/element.cpp b/app/element.cpp index 30107d12f0bef3ce56f6dcf745435d8fa861a1a2..a84ea4ad23ddb7a17f4aaec0654f344e8c095c2a 100644 --- a/app/element.cpp +++ b/app/element.cpp @@ -1,6 +1,6 @@ #include "element.h" -Element::Element(QString & name) : name(name) +Element::Element() { } diff --git a/app/element.h b/app/element.h index e89a88f8c505ea5a0814bc191d8614f9426a9e97..be0978db0c618db983c031af0caaa546c6cbe371 100644 --- a/app/element.h +++ b/app/element.h @@ -9,7 +9,7 @@ class Element : public Updatable { public: - Element(QString & name); + Element(); QString get_name(); QString get_status(); protected: diff --git a/app/elements.cpp b/app/elements.cpp index 52a9e5dd95f7e02c3b25dacc9fc1a7d4d62f3f4c..23ce03f670d83efb6654ef3099203fe629d9822f 100644 --- a/app/elements.cpp +++ b/app/elements.cpp @@ -1,6 +1,6 @@ #include "elements.h" -Elements::Elements() +Elements::Elements() : proc("/proc/"), task_list(".listT") { } @@ -13,6 +13,20 @@ QStandardItemModel & Elements::getModel() void Elements::update() { + system("ls /proc | grep '[0-9]' > .listT"); + if(!task_list.open(QIODevice::ReadOnly)) { + QMessageBox::information(0, "error", task_list.errorString()); + } + QTextStream in(&task_list); + while(!in.atEnd()) { + int pid = in.readLine().toInt(); + + + //model->appendRow(line); + } + + + task_list.close(); } diff --git a/app/elements.h b/app/elements.h index 48eac02fad5d45f38ddc10c4a0e51e7216afd80c..234b0c2c2ed0e6fd9e1a2a14293ca3e81d3330c5 100644 --- a/app/elements.h +++ b/app/elements.h @@ -16,6 +16,8 @@ public: private: QStandardItemModel model; QStandardItem *parent0 = model.invisibleRootItem(); + QFile proc; + QFile task_list; }; #endif // ELEMENTS_H diff --git a/app/generalstatus.cpp b/app/generalstatus.cpp index 429056b954a44a792061185b741c70ffe6a75e9e..f1c29d46d27557b8bd6a583a7940783ff0f46222 100644 --- a/app/generalstatus.cpp +++ b/app/generalstatus.cpp @@ -14,6 +14,8 @@ GeneralStatus::GeneralStatus() : user_time(0), uptime("/proc/uptime"), meminfo(" meminfo.close(); + user = getenv("USER"); + GeneralStatus::update(); } @@ -95,3 +97,7 @@ int GeneralStatus::getNbTask() { return nbTask; } +QString GeneralStatus::getUser() +{ + return user; +} diff --git a/app/generalstatus.h b/app/generalstatus.h index cfa60a33ff8acbc0ba4c4842d3c6a8b5589b2fe1..ed6303e94d4b5227bef55f730d54d72e8c38f20e 100644 --- a/app/generalstatus.h +++ b/app/generalstatus.h @@ -12,6 +12,7 @@ public: int getMemTotal(); double getCPU(); int getNbTask(); + QString getUser(); void update(); private: int time; @@ -20,6 +21,7 @@ private: double CPU; int nbTask; int user_time; + QString user; QFile uptime; QFile meminfo; QFile stat; diff --git a/app/service.cpp b/app/service.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d90acf176e942b6195b6da49605110d491586f3e --- /dev/null +++ b/app/service.cpp @@ -0,0 +1,23 @@ +#include "service.h" + +Service::Service() +{ + +} + +Service::update() +{ + +} + + + +int Service::get_nbTask() +{ + return nbTask; +} + +QString Service::get_details() +{ + return details; +} diff --git a/app/service.h b/app/service.h new file mode 100644 index 0000000000000000000000000000000000000000..e7d989fc70de60b041531bc9144b2e67dac10eaf --- /dev/null +++ b/app/service.h @@ -0,0 +1,17 @@ +#ifndef SERVICE_H +#define SERVICE_H + +#include "element.h" + +class Service : public Element +{ +public: + Service(); + int get_nbTask(); + QString get_details(); +private: + int nbTask; + QString details; +}; + +#endif // SERVICE_H diff --git a/app/task.cpp b/app/task.cpp index 8480da383722e8301645ce381d2d5ba933dac7ef..a10be23030b02e0a958b751a1d41e4970ed4aded 100644 --- a/app/task.cpp +++ b/app/task.cpp @@ -1,8 +1,32 @@ #include "task.h" -Task::Task(QString & name, int PID) : Element(name), PID(PID), utime(0), stat("/proc/"+QString::number(PID)+"/stat") +Task::Task(int PID) : PID(PID), utime(0), stat("/proc/"+QString::number(PID)+"/stat") { + QFile cmd("/proc"+QString::number(PID)+"/comm"); + if(!cmd.open(QIODevice::ReadOnly)) { + QMessageBox::information(0, "error", cmd.errorString()); + } + QTextStream in(&cmd); + + name = in.readLine(); + + cmd.close(); + + QString command("ls -la /proc/"+QString::number(PID)+" | grep ' \.' > .userT"); + system(command.toStdString().c_str()); + + QFile task_user(".userT"); + if(!task_user.open(QIODevice::ReadOnly)) { + QMessageBox::information(0, "error", task_user.errorString()); + } + QTextStream in2(&task_user); + QStringList fields = in2.readLine().split(" "); + + user = fields.at(fields.length()-8); + + task_user.close(); + Task::update(); } @@ -22,6 +46,7 @@ void Task::update() int new_utime = fields.at(13).toInt(); CPU = static_cast<double>(new_utime-utime); utime = new_utime; + PPID = fields.at(3).toInt(); stat.close(); } @@ -47,3 +72,11 @@ double Task::getMem() { return mem; } +int Task::getPPID() +{ + return PPID; +} +QString Task::getUser() +{ + return user; +} diff --git a/app/task.h b/app/task.h index 250435c1f4a9c305993bb594a84f823869e438b0..6687f2e0dd48b2f5e989964d01e76eb8d29e12bc 100644 --- a/app/task.h +++ b/app/task.h @@ -10,19 +10,23 @@ class Task : Element { public: - Task(QString & name, int PID); + Task(int PID); void update(); void sendSignal(int sig); int getPID(); double getCPU(); int getUtime(); double getMem(); + int getPPID(); + QString getUser(); private: int PID; double CPU; int utime; double mem; + int PPID; QFile stat; + QString user; }; #endif // TASK_H