繁体   English   中英

测量进程及其子进程的时间

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM