これは小さなC ++アプリケーションです。
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
cout<<"Hello World"<<endl;
std::cout << "pid = " << getpid() << '\n';
return 0;
}
単に文字列とアプリケーションのpidを印刷します。
このPIDに関するすべての統計をどのように取得できますか?たとえば、どのくらいの期間運営されていますか? CPU、メモリ、ディスク、ネットワークの最大、最小、平均使用量はいくらですか?
注:pidを取得するとアプリケーションが完了したため/proc/PID/
動作しません。
$ ./a.out
Hello World
pid = 19691
$ cd /proc/19691
-bash: cd: /proc/19691: No such file or directory
答え1
これは、リソース使用量を測定するプロセスが測定を実行するプロセスの子である場合に可能です。これを実行するには別のプログラムが必要で、a.out
それを待ってから呼び出します。getrusage
:
struct rusage rusage;
getrusage(RUSAGE_CHILDREN, &rusage);
これにより、rusage
終了して待機しているすべての発信者子孫の集約リソース使用量で構造が満たされます。
Linuxでは、次のものを使用できます。システムwait4
コール待機通話と子供別getrusage
通貨を組み合わせます。