#include #include #include #include #include #include #include #include int main(void) { int ss[2]; int i, j; struct pollfd pfd[2]; char str[] = "w"; if(socketpair(PF_UNIX, SOCK_STREAM, 0, ss) != 0) { fprintf(stderr, "socketpair: failed\n"); return 1; } for(i = 0; i < 2; ++i) pfd[i].fd = ss[i]; for(j = 0; j < 10; ++j) { for(i = 0; i < 2; ++i) { pfd[i].events = (POLLIN | POLLOUT); } poll(pfd, 2, -1); for(i = 0; i < 2; ++i) if(pfd[i].revents & POLLERR) { fprintf(stderr, "POLLERR: %d\n", pfd[i].fd); return 1; } if(pfd[0].revents & POLLOUT) { send(pfd[0].fd, (void *)str, 1, 0); fprintf(stderr, "w"); } if(pfd[1].revents & POLLIN) { char buffer[1024]; recv(pfd[1].fd, buffer, sizeof(buffer), 0); printf("W"); } } return 0; }