C++:linuxプロセス情報の読み込み

6510 ワード

C++:プロセス情報の読み出し
  • 1. メモリ使用量
  • 1.メモリ使用量
     linuxシステムでは、プロセスの情報は/proc/pid/statusファイルに保存され、pidはプロセスのIDです.statusファイルには、RssAnon:148 kBというものがあります.次のプログラムは、これを読み込むことで、プロセスが使用するメモリサイズを取得します.
    #include 
    #include 
    #include 
    
    using namespace std;
    
    template<typename T> inline string toString(const T& var) {
    	stringstream ss;
    	ss << var;
    	return ss.str();
    }
    
    //KiB
    int getMem(pid_t pid) {
    	string file_name = "/proc/" + toString(pid) + "/status";
    	FILE *fd = fopen(file_name.c_str(), "r");
    	char key_value[1024];
    	string key;
    	int value = -1;
    	stringstream ss;
    	while(fgets(key_value, sizeof(key_value), fd)) {
    		ss.str("");
    		ss.clear();
    		ss << key_value;
    		ss >> key >> value;
    		if(key.compare("RssAnon:") == 0)
    			break;
    	}
    	fclose(fd);
    	return value;
    }
    
    int main() {
    	cout << "pid:" << getpid() << " mem:" << getMem(getpid()) << "KiB" << endl;
    }
    

    [参考]