lkml.org 
[lkml]   [2004]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: 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/

    \
     
     \ /
      Last update: 2005-03-22 14:08    [W:0.022 / U:3.912 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site