#include #include #include static int p1[2], p2[2]; #define N 1000000 void *server(void *_) { char buf; while (read(p1[0], &buf, 1) == 1) write(p2[1], &buf, 1); } void client() { char buf; int i; for (i = 0; i < N; ++i) { write(p1[1], &buf, 1); read(p2[0], &buf, 1); } } int main(int ac, char **av) { pthread_t thread; pipe(p1); pipe(p2); if (ac < 2 || strcmp(av[1], "fork") != 0) pthread_create(&thread, NULL, server, NULL); else if (fork() == 0) { server(NULL); return 0; } client(); return 0; }