gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:25:43 24 4
gpt4 key购买 nike

我正在做一些涉及fork、vfork和clone功能的分配。我需要测量父进程和所有子进程的用户、系统、实时时间。测量用户和系统时间很简单,为了测量实时时间,我从 sys/times.h 调用时间,存储值和子进程调用

_exit(times(NULL)-procReal)

我将此值添加到其他变量(参见下面的代码)。

我的问题是,我存储的值应该在 fork 之前计算还是在 fork 之后计算?

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 副本,与父进程中的副本不同。该值应该在父级“before”fork 和父级“after”wait 中计算。

关于c - 测量进程及其子进程的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10036909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com