こんにちは私はOSクラスのプロジェクトで作業中に少し問題に遭遇しています。 getrusage()を使用して、私が書いているプログラムのユーザーモードとカーネルモードの両方で費やされた時間を判断するように指示されています。問題は、CPUとカーネルの使用率がゼロであることが常にわかっていることです。関数を調べると、rusage構造体のメンバーのいくつかがあなたの特定のバージョンのLinuxでサポートされていない場合、ZEROに設定されているということがmanページに記載されています。基本的には、私の関数呼び出しとそのパラメータへのアクセスが正しいかどうか誰かに教えてもらえるかどうか疑問に思っていました(問題があるかどうか、私のカーネルでサポートされていないかどうかを知ることができます)。getrusage issues
コード
struct rusage usage;
struct rusage *p = &usage;
getrusage(RUSAGE_SELF, p);
printf("time in user mode = %ld\ntime in kernel mode = %ld\n", p->ru_utime.tv_sec, p->ru_stime.tv_sec);
私にはうまく見えます。 getrusageを呼び出したときにプロセスが実行されている時間はどれくらいですか? [times](http://linux.die.net/man/2/times)とは何ですか? – Mikel
getrusageの戻り値が-1かどうかを確認する必要があります。次に、errnoに何が間違っているかを確認します。 – Mikel
私はそれをして、それはうまく戻ります。私はこの時点では、これらの値を設定していないことを確信しています。これは、構造体のメンバーの一部にアクセスできるようにするためです。スレッドのCPU使用率を取得するための代替提案がありますか? –