EINTR


EINTR w encyklopedii

Z Wikipedii, wolnej encyklopedii Przejdź do nawigacji Przejdź do wyszukiwania

EINTR – jeden z kodów błędu mogących wystąpić w errno, oznaczający przerwanie wywołania funkcji (ang. Interrupted function call). Może wystąpić, jeśli oczekiwanie procesu na zakończenie wywołania pewnej funkcji blokującej (np. funkcji czytającej dane z wejścia) musiało zostać przerwane. Przykładowy scenariusz, w którym to może się wydarzyć, to, krok po kroku:

  • Proces wywołuje read() na połączeniu sieciowym
  • Kernel czeka na dane, w międzyczasie uruchamiając inne programy
  • Inny program wysyła do bieżącego procesu sygnał
  • Kernel musi uruchomić odpowiednią procedurę obsługi sygnału
  • Gdyby kernel pozwolił na kontynuację read(), a procedura obsługi sygnału dokonała kolejnego wywołania systemowego, 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()
Na podstawie artykułu: "EINTR" pochodzącego z Wikipedii
OryginałEdytujHistoria i autorzy