Anzeige:
Ergebnis 1 bis 3 von 3

Thema: errno=EINTR bei nonblocking i/o

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657

    errno=EINTR bei nonblocking i/o

    Hallo,

    kann mir jemand genauer erklären, wie (und ob) ein
    read od. write sich mit EINTR beendet, wenn man
    nonblocking sockets verwendet?

    also ich habe einen FD, der ein verbundener tcp socket ist
    und möchte von diesem lesen (er ist bereit) bzw auf diesen schreiben.
    Ist es nun überhaupt möglich, dass EINTR auftritt und welche
    Ereignisse würden zu so etwas führen?

    Gibt es andere mögliche Gründe, dass zu wenig Daten bei write übertragen werden, außer dass der Puffer (in diesem Fall TCP Sendepuffer) voll ist?


    Markus

  2. #2
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Zitat Zitat von man read
    EINTR The call was interrupted by a signal before any data was read; see signal(7).
    Zitat Zitat von man write
    EINTR The call was interrupted by a signal before any data was written; see signal(7).
    Also kann grundsätzlich ein beliebiges Signal dein read/write unterbrechen bevor überhaupt Daten gesendet wurden, was dann EINTR als Rückgabewert zur Folge hat.
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  3. #3
    Registrierter Benutzer
    Registriert seit
    14.01.2002
    Beiträge
    657
    Zitat Zitat von jeebee Beitrag anzeigen
    Also kann grundsätzlich ein beliebiges Signal dein read/write unterbrechen bevor überhaupt Daten gesendet wurden, was dann EINTR als Rückgabewert zur Folge hat.
    naja wenn noch keine daten gesendet wurden, wäre der socket ja auch nicht bereit und würde sofort EAGAIN zurückliefern..

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •