// Test-case: Benchmark pipe performance // Author: Linus Torvalds // Link: https://git.kernel.org/linus/0ddad21d3e99 // // Compile: gcc-12 -o 0ddad21d3e99 0ddad21d3e99.c // #include int main(int argc, char **argv) { int fd[2], counters[2]; pipe(fd); counters[0] = 0; counters[1] = -1; write(fd[1], counters, sizeof(counters)); /* 64 processes */ fork(); fork(); fork(); fork(); fork(); fork(); do { int i; read(fd[0], &i, sizeof(i)); if (i < 0) continue; counters[0] = i+1; write(fd[1], counters, (1+(i & 1)) *sizeof(int)); } while (counters[0] < 1000000); return 0; }