Professional Web Applications Themes

"Interrupted system call", read and socket - UNIX Programming

Hello, I have a server application and a client one which communicate with sockets and SSH tunneling (ssh -N -f -L8888:localhost:3333 userlocalhost). I have to use ssh tunneling because of firewalls. My problem is that the read in the client has the "Interrupted system call" error even if I put this while(-1==(nr=read(DIST,ptr,nl))) { if(errno!=EINTR) break; } and it appears randomly. If I do not use ssh tunneling, it works. If someone has an idea ... Thanks, Karim....

  1. #1

    Default "Interrupted system call", read and socket

    Hello,

    I have a server application and a client one which communicate with
    sockets and SSH tunneling (ssh -N -f -L8888:localhost:3333
    userlocalhost). I have to use ssh tunneling because of firewalls.

    My problem is that the read in the client has the "Interrupted system
    call" error even if I put this
    while(-1==(nr=read(DIST,ptr,nl)))
    {
    if(errno!=EINTR)
    break;
    }

    and it appears randomly.

    If I do not use ssh tunneling, it works.

    If someone has an idea ...

    Thanks,

    Karim.

    karim Guest

  2. #2

    Default Re: "Interrupted system call", read and socket

    karim bernardet wrote:
     

    No idea.
    Typically, you will receive this error when the syscall blocks and a signal
    is delivered.
    However why bother, just resume read().
    E.g.:

    int readn(int fd, void* data, size_t size)
    {
    for (;;) {
    ssize_t n = read(fd, data, size);
    if (n == -1) {
    if (errno == EINTR)
    continue; // Resume.

    return errno;
    }

    if (!(size -= n))
    return 0;

    data = (char*)data + n;
    }
    }

    /FAU

    Frank Guest

  3. #3

    Default Re: "Interrupted system call", read and socket

    Hello Karim,
     [/ref]

    So basically, you resume the read() and you still get an "Interrupted
    system call"?

    Whether your loop construct is wrong (doesn't look like to me. Though
    I prefer Frank's construct which is somewhat nicier to read)...

    Or it's not the read() call that got interrupted...


    Regards,
    Loic.
    Loic Guest

Similar Threads

  1. How to call the operation-system "Save As" DialogueBox
    By fighttodeath in forum Macromedia Flex General Discussion
    Replies: 7
    Last Post: June 2nd, 07:35 PM
  2. CALL TO ACTION: Photoshop GURU's help solve "BULGEGATE"... please read
    By political commentator in forum Adobe Flash, Flex & Director
    Replies: 4
    Last Post: October 29th, 01:10 AM
  3. Replies: 3
    Last Post: September 22nd, 11:12 AM
  4. Replies: 3
    Last Post: June 24th, 06:08 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139