EINTR
Z Wikipedii
EINTR to dość tajemniczy błąd errno, dosłownie przerwanie wywołania funkcji (ang. Interrupted function call). Może wystąpić jeśli system musiał powrócić do programu podczas oczekiwania w funkcji. Np.
- Program wywołuje read() na połączeniu sieciowym
- Kernel czeka na dane, w międzyczasie uruchamiając inne programy
- Jeden z innych programów wysyła do naszego programu sygnał
- Kernel musi uruchomić odpowiednią dla sygnału procedurę
- Jeśli kernel pozwoliłby na kontynuację read(), a procedura obsługi sygnału dokonała wywołania kernela, dwa wywołania miałyby miejsce w tym samym czasie. Kernel musiałby jedno z nich przerwać.
- Kernel przerywa read()
- Kiedy skończy się obsługa sygnału kernel zwróci EINTR dla wywołania read()