[英]Measuring time of process and its children
我正在做一些涉及 fork、vfork 和克隆 function 的小任务。我需要测量用户、系统、父进程和所有子进程的实时时间。 测量用户和系统时间很简单,要测量实时时间,我从 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 是一个全局变量。
当你 fork 一个孩子时,孩子的地址空间中有另一个 procReal 副本,与父母中的不同。 该值应该在父“fork”前和父“after”wait 中计算。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.