#include #include #include #include #include #include #include #include #define SET_NONBLOCKING(sock) fcntl(sock, F_SETFL, fcntl(sock, F_GETFL, 0) | O_NONBLOCK); int main(void) { fd_set rfds; struct timespec tv; int sock_server, sock_client; int retval; struct sockaddr_un addr; \ memset(&addr, 0, sizeof(addr)); \ addr.sun_family = AF_UNIX; \ strcpy(addr.sun_path, "@test.sock"); sock_server = socket(AF_UNIX, SOCK_STREAM, 0); SET_NONBLOCKING(sock_server); if (bind(sock_server, (struct sockaddr*)&addr, sizeof(addr))) { printf("binding server socket failed"); return 1; } listen(sock_server, 5); sock_client = socket(AF_UNIX, SOCK_STREAM, 0); SET_NONBLOCKING(sock_client); retval = connect(sock_client, (struct sockaddr*)&addr, sizeof(addr)); printf("Ret from client connect: %d; errno: %d\n", retval, errno); FD_ZERO(&rfds); FD_SET(sock_client, &rfds); tv.tv_sec = 1; tv.tv_nsec = 0; retval = pselect(sock_client + 1, &rfds, NULL, NULL, &tv, NULL); return 0; }