我正在使用 times() 函数来测量值,但我不确定我的方法是否正确。请查看并提出建议
struct tms tms_start, tms_end;
if (!(pid=fork()))
{
//some necessary operations here
times(&tms_start);
execl(...);
}
else if (pid)
{
//in parent
int status;
wait(&status);
times(&tms_end);
if (WIFEXITED(status))
{
if(WEXITSTATUS(status)==0)
{
clock_t real = tms_end.tms_cstime - tms_start.tms_stime
float running_time = real/(double)sysconf(_SC_CLK_TK);
}
}
}
最佳答案
在调用 fork()
之前,您需要调用 times(&tms_start)
。在上面的代码中,tms_start
变量在父级中未初始化,因为父级从不调用 times(&tms_start)
。
struct tms tms_start, tms_end;
times(&tms_start); // <-- here
if (!(pid=fork()))
{
//some necessary operations here
execl(...);
}
else if (pid)
{
...
关于c - 测量 Linux 上 exec()-ed 进程所花费的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1076374/