测量linux上的exec() - ed进程所花费的时间

use*_*127 2 c linux ipc

我正在使用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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Gre*_*ill 5

你需要在通话times(&tms_start)之前拨打电话fork().在上面的代码中,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)
{
    ...
Run Code Online (Sandbox Code Playgroud)