Messages in this thread |  | | | Date | Wed, 17 Nov 2004 23:42:52 +0100 | | From | Alex Riesen <> | | Subject | Re: AF_UNIX sockets: strange behaviour |
| |
On Wed, 17 Nov 2004 16:29:14 +0100 (CET), Catalin Drula <catalin.drula@imag.fr> wrote: > I have a small application that communicates over Bluetooth. I use > connection-oriented UNIX domain sockets (AF_UNIX, SOCK_STREAM) to > communicate between the applications's threads. When reading from > one of these sockets, I get a strange behaviour: if I read all the > bytes that are available (13, in this case) all at once, it's fine; > however, if I try to read in two smaller batches (say, first time > 6, and second time 7), the first read returns (with the 6 bytes), but > the second read never returns.
2.6.9, works. Could you post your code?
#include <unistd.h> #include <stdio.h> #include <sys/socket.h>
int main(int argc, char **argv) { char buf[13]; int s[2]; if ( socketpair(AF_UNIX, SOCK_STREAM, 0, s) < 0 ) { perror("socketpair"); return 1; } if ( fork() == 0 ) { close(s[0]); write(s[1], "023456789012", 13); read(s[1], buf, 1); /* wait for parent */ } else { close(s[1]); if ( read(s[0], buf, 6) != 6 ) perror("6"); if ( read(s[0], buf, 7) != 7 ) perror("6"); close(s[0]); } return 0; } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |