این برنامه از ps برای پیدا کردن برنامهای که بیشتر از ۷۰ درصد رو گرفته استفاده میکنه. فقط تاخیر بین آپدیت شدن لیست processها چند ثانیهای میشه
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <fstream>
using namespace std;
double getPercent(ifstream& fin);
string getNextWord(ifstream& fin);
int main(){
cout<<"Hello\n";
system("ps -eo pcpu,pid,fname>report.txt");
ifstream fin("report.txt"); //open report.txt file
if(fin.fail()){
cout<<"fail to open report.txt!";
return 1;
}
string line;
int percent;
getline(fin, line);//we dont need the first line
while(!fin.fail()){
percent = getPercent(fin);
cout<<percent<<" ";
if(percent>70){
cout<<"The following program take more than 70 percent of cpu\n";
string pid = getNextWord(fin);
cout<<"Program name: "<<getNextWord(fin);
pid = "kill "+pid;//concat the external command
const char* p = pid.c_str();//system only accept char* so we convert string to char*
system(p);
cout<<endl;
}else{
getline(fin, line);//leave the rest line
}
//cout<<line<<endl;
}
cout<<endl;
return 0;
}
double getPercent(ifstream &fin){
string numStr="";
const char *numChar;
fin>>numStr;
numChar=numStr.c_str();
return atof(numChar);
}
string getNextWord(ifstream &fin){
string name;
fin>>name;
return name;
}