#include #include #include #include #include #define NUM 100000 int fd[2]; static void *proc(void *arg) { char c = (char)arg; int i; for (i = 0; i < NUM; ++i) { send(fd[1], &c, 1, 0); } return NULL; } int main() { int s, i, ret; int c1=0, c2=0, e13=0; pthread_t t1, t2; char c; socketpair(AF_UNIX, SOCK_STREAM, 0, fd); s = pthread_create(&t1, NULL, &proc, (void *)1); s = pthread_create(&t2, NULL, &proc, (void *)2); for (i = 0; i < 2*NUM; ++i) { char r=0; ret = recv(fd[0], &r, 1, 0); if (ret != 1) { if (ret == -1 && errno == 13) { ++e13; } else { printf("Ret = %d, err = %d\n", ret, errno); } } else if (r == 1) { ++c1; } else if (r == 2) { ++c2; } else { printf("Got bad %d\n", (int)r); } } printf("c1=%d, c2=%d, e13=%d\n", c1, c2, e13); return 0; }