#include <stdio.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/wait.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
time_t t;
int ch_w=0, ch_r=0;
int fd[2], n, pid, i, size;
struct timeval start, end;
size=atoi(argv[1]);
unsigned char* file=malloc((sizeof(char))*size);
if (pipe(fd) == -1)
{
perror("Ошибка при создании канала");
exit(1);
}
if ((pid=fork()) < 0)
{
perror("Ошибка при создании потока");
exit(2);
}
if(pid==0) //Child
{
close(fd[1]);
gettimeofday(&start, NULL);
for(i=0;i<size;i++)
{
read(fd[0], file, size);
ch_r+=file;
}
gettimeofday(&end, NULL);
int time=end.tv_usec-start.tv_usec;
double speed=size/time;
printf("Время чтения: %d мкс. Контрольная сумма: %d.\n Скорость: %f\n", time, ch_r, speed);
close(fd[0]);
free(file);
}
else //Parent
{
close(fd[0]);
gettimeofday(&start, NULL);
for(i=0;i<size;i++)
{
file=rand();
ch_w+=file;
}
gettimeofday(&end, NULL);
int time=end.tv_usec-start.tv_usec;
double speed=size/time;
printf("Время записи: %d мкс. Конторольная сумма: %d.\n Скорость: %f\n", time,ch_w, speed);
write(fd[1], file, size);
close(fd[1]);
free(file);
wait(NULL);
}
}
время переключения процессов
Код:
Как измерить время переключения между родительским и дочерним процессом и наоборот?