アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のような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);
}

A 回答 (1件)

プログラムの目的がよく分かりませんでした。



times() は自分とその子プロセスの実行時間(の和)を返します。

もし、fork() した子プロセスだけの実行時間を知りたいのなら、wait3() や wait4() で返される struct rusage の値を見る必要があります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!