Socket: Interrupted system call
-
hi,
ich hab einen kleinen Server geschrieben, der entsprechend auf Requests wartet. Nun kommt es aber ab und an vor, das wenn der Server mit recvfrom() wartet es manchmal passiert das ich einen "Interrupted system call"-error bekomme.
Der Server bricht dann den receifrom() ab wenn das passiert. Wie kann ich das verhindern, das ist ja denkbar schlecht wenn der Server einfach aufhört zu lauschen.
Jemand einen Tipp ?
-
das ist grundsätzlich kein problem. man ruft die funktion in dem fall einfach noch mal auf. die glibc bietet hier ein macro an, das dir hier etwas programmierarbeit abnimmt.
-
das makro kennt er bei mir nicht
undefined reference to `TEMP_FAILURE_RETRY'
ich hab aber die unistd.h drin als header. was mach ih falsch?
-
mit -DGNU_SOURCE compilieren.
-
Oder einfach eine Schleife drum herum. Etwa so:
do { n = recvfrom(...); } while (n == -1 && errno == EINTR);
Das geht dann auch ohne GNU.