私はfork、vfork、clone関数を含む小さな割り当てを行っています。親プロセスとすべての子プロセスの両方のユーザー、システム、リアルタイムを測定する必要があります。ユーザーとシステムの時間の測定は簡単です。リアルタイムを測定するには、sys / times.hから時間を呼び出し、値と子プロセスの呼び出しを保存します。
_exit(times(NULL)-procReal)
そして、この値を他の変数に追加します(以下のコードを参照)。
私の質問は、私が保存する値は、フォークの直前またはフォークの直後に計算する必要があるかどうかです。
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はグローバル変数です。