34 lines
996 B
C
34 lines
996 B
C
|
|
#include <errno.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <time.h>
|
|
#include <unistd.h>
|
|
|
|
int main(const int argc, const char *argv[]) {
|
|
if (argc != 2) {
|
|
fprintf(stderr, "usage: main <cycles>\n");
|
|
return 1;
|
|
}
|
|
|
|
const long cycles = strtol(argv[1], NULL, 10);
|
|
|
|
struct timespec start, end;
|
|
clock_gettime(CLOCK_MONOTONIC, &start);
|
|
|
|
int pipes[2];
|
|
for (int i = 0; i < cycles; i++) {
|
|
if (pipe(pipes) != 0) {
|
|
fprintf(stderr, "unable to create pipes: %s\n", strerror(errno));
|
|
exit(1);
|
|
}
|
|
close(pipes[0]);
|
|
close(pipes[1]);
|
|
}
|
|
|
|
clock_gettime(CLOCK_MONOTONIC, &end);
|
|
const long duration = end.tv_sec * 1000000000 + end.tv_nsec - start.tv_sec * 1000000000 - start.tv_nsec;
|
|
printf("start: %li.%09li\nend: %li.%09li\nduration: %li,%03li,%03li ns\n", start.tv_sec, start.tv_nsec, end.tv_sec, end.tv_nsec, duration / 1000000, duration / 1000 % 1000, duration % 1000);
|
|
}
|