- 论坛徽章:
- 0
|
程序是在REDHAT9.0下写的,想测试下子进程的响应时间和运行时间,但是感觉的出的响应时间的程序老是有问题,请大家帮忙看看
#include <stdio.h>
#include <sys/time.h>
#include <sched.h>
int main()
{
int child;
float time1;
struct sched_param SP;
struct timeval tm1,tm2;
tm1.tv_sec=0;
tm1.tv_usec=0;
SP.sched_priority=99;
sched_setscheduler(0,SCHED_FIFO,&SP);//设置父进程的为实时进程,这样子进程也会是实时进程
gettimeofday(&tm2,NULL);//获取当前时间以方便测出响应时间
time1=1000000*(tm2.tv_sec-tm1.tv_sec)+tm2.tv_usec-tm2.tv_usec;
time1/=1000000;
child=fork();
if(child==0)
{
struct timeval tm3,tm4,tm5;
gettimeofday(&tm3,NULL);//获得系统的当前时间用来和tm2相减得到系统响应时间;
tm5.tv_sec=0;
tm5.tv_usec=0;
int a,b=0;
float time2,time3;
for(a=0;a++;a<1000)
b=a+b;
gettimeofday(&tm4,NULL);
time2=1000000*(tm3.tv_sec-tm5.tv_sec)+tm3.tv_usec-tm5.tv_usec;
time2/=1000000;
time3=1000000*(tm4.tv_sec-tm3.tv_sec)+tm4.tv_usec-tm3.tv_usec;//获得进程运行时间;
time3/=1000000;
printf(“time2:%f\n”,time2);
printf(“time3:%f\n”,time3);
exit(0);
}
exit(0)
} |
|