使用clock和times来获取进程时间
源于linux系统编程手册
#include<stdio.h>
#include<time.h>
#include<sys/times.h>
#include<stdlib.h>
#include<unistd.h>
static void displayProcessTimes(const char *msg)
{
struct tms t;
clock_t clockTime;
static long clockTicks = 0;
if(msg != NULL )
{
printf("%s",msg);
}
if(clockTicks == 0)
{
clockTicks = sysconf(_SC_CLK_TCK);
if(clockTicks == -1)
{
perror("sysconf");
return ;
}
}
clockTime = clock();
if(clockTime == -1)
{
perror("clock");
return ;
}
printf("clock() returns : %ld clocks-per-sec(%.2f secs)\n",(long)clockTime,
(double)clockTime / CLOCKS_PER_SEC);
if(times(&t) == -1)
{
perror("times\n");
return ;
}
printf(" times() yields:user CPU=%.2f;system CPU:%.2f\n",
(double)t.tms_utime / clockTicks,
(double)t.tms_stime / clockTicks);
}
int main(int argc, char *argv[])
{
int numCalls , j;
printf("CLOCKS_PER_SEC = %ld sysconf(_SC_CLK_TCK)=%ld \n\n",(long)CLOCKS_PER_SEC,
sysconf(_SC_CLK_TCK));
displayProcessTimes("At proram start:\n");
numCalls = (argc > 1) ? atoi(argv[1]) : 100000000;
for(j = 0 ; j < numCalls ; j++)
{
(void)getppid();
}
displayProcessTimes("After getppid() loop:\n");
exit(EXIT_SUCCESS);
return 0;
}