#include #include #include #include #include #define TEST_STRING "Hello, World!" int main() { char buf[15]; int sks[2]; int i, sk, ret; if (socketpair(AF_UNIX, SOCK_STREAM, 0, sks)) return 1; sk = sks[0]; for (i = 0; i < 10; i++) { if (send(sk, TEST_STRING, sizeof(TEST_STRING) - 1, MSG_DONTWAIT) < 0) return 1; } sk = sks[1]; ret = 0; if (setsockopt(sk, SOL_SOCKET, SO_PEEK_OFF, &ret, sizeof(int))) return 1; while (1) { int ret; ret = recv(sk, buf, sizeof(buf) - 1, MSG_DONTWAIT | MSG_PEEK); if (ret < 0) { if (errno == EAGAIN) break; return 1; } if (ret == 0) break; buf[ret] = 0; printf("msg: %s\n", buf); } return 0; }