C言語システムコール-getrusage
getrusageシステムコール
概要
getrusageはプロセスのシステムリソース使用量を取得します。
リソース情報を受け取るには、rusage構造体へのポインタを指定します。
rusage構造体はヘッダ(/usr/include/sys/resource.h)に以下のように宣言されています。
struct rusage {
struct timeval ru_utime; /* user time used */
struct timeval ru_stime; /* system time used */
long ru_maxrss; /* maximum resident set size */
long ru_ixrss; /* integral shared memory size */
long ru_idrss; /* integral unshared data size */
long ru_isrss; /* integral unshared stack size */
long ru_minflt; /* page reclaims */
long ru_majflt; /* page faults */
long ru_nswap; /* swaps */
long ru_inblock; /* block input operations */
long ru_oublock; /* block output operations */
long ru_msgsnd; /* messages sent */
long ru_msgrcv; /* messages received */
long ru_nsignals; /* signals received */
long ru_nvcsw; /* voluntary context switches */
long ru_nivcsw; /* involuntary */
};
サンプルプログラム
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/resource.h>
static void
dummy(void)
{
int cnt = 0;
int sum = 1;
for(cnt = 0; cnt <= 1000000; cnt++ ){
sum *= cnt;
}
}
int
main(void)
{
struct rusage usage;
int rc = 0;
dummy();
rc = getrusage(RUSAGE_SELF, &usage);
if(rc < 0){
printf("Error: getrusage(%d) %s\n", errno, strerror(errno));
return(-1);
}
printf("usr time = %ld.%d\n",
usage.ru_utime.tv_sec, usage.ru_utime.tv_usec);
printf("sys time = %ld.%d\n",
usage.ru_stime.tv_sec, usage.ru_stime.tv_usec);
return(0);
}
関連ページ
- C言語
- C言語システムコール
- C言語システムコール-chdir
- C言語システムコール-chroot
- C言語システムコール-fork
- C言語システムコール-execve
- C言語システムコール-wait
- C言語システムコール-getpid
- C言語システムコール-getpriority / C言語システムコール-setpriority
- C言語システムコール-getpgid / C言語システムコール-setpgid
- C言語システムコール-getuid / C言語システムコール-setuid
- C言語システムコール-getsid / C言語システムコール-setsid
- C言語システムコール-getgroups / C言語システムコール-setgroups
- C言語システムコール-getrusage
- C言語システムコール-getrlimit / C言語システムコール-setrlimit
- C言語システムコール-nanosleep
- C言語システムコール-kill
- C言語システムコール-sigaction
- C言語システムコール-sigsuspend
- C言語システムコール-signal
- C言語システムコール-getitimer
- C言語システムコール