こんにちは、OS クラスのプロジェクトに取り組んでいるときに、ちょっとした問題が発生しています。getrusage() を使用して、作成中のプログラムのユーザー モードとカーネル モードの両方で費やされた時間を判断するように指示されました。問題は、CPU とカーネルの使用率がゼロであることが常に通知されることです。関数を調べると、man ページには、rusage 構造体の一部のメンバーが Linux の特定のバージョンでサポートされていない場合、ゼロに設定されていることが記載されています。基本的に、関数の呼び出しとそのパラメーターへのアクセスが正しいかどうかを誰かが教えてくれるかどうか疑問に思っていました(したがって、私が問題であるかどうか、またはそれらの機能がカーネルでサポートされていないかどうかを判断できます)。
コード
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);