UNIX times関数を用いた時間計測
以下のようなforkを使用したプログラムの実行時間を計測したいのですが、times関数の使用方法がわかりません。
gettimeofdayを用いて物理的な実行時間を計測することは出来たのですが、
それでは不充分なので、もっと詳細に計測したいのです。
times関数を用いると
・実行中のプロセスが消費したユーザCPU時間
・実行中のプロセスが消費したシステムCPU時間
・子プロセスが消費したユーザCPU時間
・子プロセスが消費したシステムCPU時間
がわかりますよね?sysconf()でクロック時間を得るところまでは出来たのですが、アドバイスお願いします。
#include <stdio.h>
#include <sys/time.h>
#include <sys/times.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int val ;
struct timeval tv,tw;
gettimeofday(&tv,NULL);
time = times(&t);
switch(fork()) {
case 0:
exit(0) ;
case -1:
perror("child process") ;
break;
default:
wait(&val) ;
}
gettimeofday(&tw,NULL);
time = tw.tv_usec - tv.tv_usec;
printf("child PID = %d\n",cpid);
printf("val = %d\n");
printf("%ldus\n",time);
}
お礼
回答ありがとうございます。 でも、そういうことではないんです…。 図が載せられればすぐ分かることなんですが…。