2012-04-05 20 views
0

私は、fork、vfork、およびclone関数を含む少しの譲歩をしています。親と子プロセスの両方のユーザー、システム、リアルタイムを測定する必要があります。測定ユーザとシステム時間は、実際の時間を測定するために、私は値と子プロセスがプロセスとその子の測定時間

_exit(times(NULL)-procReal) 

を呼び出して、私は他の変数にこの値を追加保存し、SYS/times.hからの時間を呼び出して簡単です(以下のコードを参照してください) 。

私の値は、フォークの直前またはフォークの直後に計算されるべきですか?

procReal=times(NULL);//here 
#ifdef FORK 
     pid=fork(); 
#elif VFORK 
     pid=vfork(); 
#endif 
procReal=times(NULL);//or maybe here 
    if (pid <0) 
     error_sys_f("fork failed"); 
    else if (pid ==0) 
    { 
     foo(); 
    } 
    else 
    { 
     wait(&statLoc); 
     if (WIFEXITED(statLoc)) 
      childrenReal+=WEXITSTATUS(statLoc); 
     else 
      error_sys_f("unnormal exit from children"); 
    } 

procRealはグローバル変数です。

答えて

2

子をフォークするとき、親のものと同じではなく、子のアドレス空間にprocRealの別のコピーがあります。値は、親「前」のフォークと親の「後」の待機で計算する必要があります。

関連する問題