Kurz gesagt, wie testet man eine Fehlerbedingung wie EINTR bei einem Systemaufruf.
Ein spezielles Beispiel, an dem ich arbeite und das ein Fall für sich sein könnte, ist die Frage, ob es notwendig ist, fclose erneut aufzurufen, wenn es EOF mit (errno==EINTR) zurückgibt. Das Verhalten hängt von der Implementierung von fclose ab:
// Given an open FILE *fp
while (fclose(fp)==EOF && errno==EINTR) {
errno = 0;
}
Dieser Aufruf kann unsicher sein, wenn fp beim Auftreten von EINTR freigegeben wird. Wie kann ich die Fehlerbehandlung für den Fall (errno==EINTR) testen?