ANSI C 9

ANSI C 9



DODATEK B BIBLIOTEKA STANDARDOWA

DODATEK B BIBLIOTEKA STANDARDOWA


Skoki odległe: nagłówek <setjmp.h>

Deklaracje zawarte w <setjmp.h> dostarczają mechanizmu pozwalającego ominąć normalny ciąg wywołań funkcji i powrotów, zwykle po to, aby umożliwić bezpośredni powrót z głęboko zagnieżdżonych wywołań funkcji.

int setjmp(jmp_buf env)

Funkcja setjmp zachowuje w env informacje o stanie programu, wykorzystywane później przez funkcję longjmp. Bezpośrednio wywołana funkcja setjmp zwraca zero; wartość różną od zera otrzymuje się w wyniku późniejszego wywołania funkcji longjmp. Wywołania funkcji setjmp mogą wystąpić tylko w niektórych kontekstach - w zasadzie tylko w testach instrukcji if, switch i pętli, a i tu w niezbyt skomplikowanych wyrażeniach relacyjnych.

if (setjmp(env) == 0)

/* wchodzi tu przy bezpośrednim wywołaniu */ else    *

/* wchodzi tu po wywołaniu longjmp */

void longjmp(jmp_buf env, int val)

Funkcja longjmp przywraca stan programu zapamiętany w zmiennej env przez ostatnie wywołanie funkcji setjmp, a wykonanie programu wznawia się w taki sposób, jakby właśnie wykonano funkcję setjmp, która wróciła z wartością val różną od zera. Funkcja zawierająca wywołanie setjmp nie może się zakończyć przed wywołaniem longjmp. Dostępne obiekty mają takie wartości, jakie miały w chwili wywołania longjmp, z tym że wartości zmiennych automatycznych nie-volatile nie są zdefiniowane, jeśli uległy zmianie po wykonaniu setjmp.


Sygnały: nagłówek <signal.h>

Nagłówek <signal.h> dostarcza mechanizmów do obsługi zdarzeń wyjątkowych, które mogą zajść podczas wykonywania programu. Takimi zdarzeniami są np. sygnał przerwania, nadesłany z zewnątrz programu, lub błąd w wykonaniu programu.

void (*signal(int sig, void (*handler) (int))) (int)

Funkcja signal rozstrzyga, w jaki sposób będą obsługiwane nadchodzące sygnały. Jeśli argument handler ma wartość SIG-DFL, podejmuje się domyślną akcję zależną od implementacji; jeśli ma wartość SIG_IGN, to sygnał będzie ignorowany; w pozostałych przypadkach wywołuje się wskazaną przez niego funkcję z podanym rodzajem sygnału. Oto niektóre z możliwych sygnałów:

B10 OBSŁUGA DATY I CZASU: NAGŁÓWEK <TIME.H>


SIGABRT nienormalne zakończenie programu, np. jako skut funkcji abort;


SIGFPE

SIGILL


błąd arytmetyczny, np. dzielenie przez zero lub nadmiar; zła postać funkcji, np. nielegalna instrukcja;

SIGINT ingerencja użytkownika, np. przerwanie;

SIGSEGV nielegalne odwołanie do pamięci, np. sięgnięcie poza przydzielony

obszar;

SIGTERM żądanie zakończenia przesłane do programu.

Funkcja signal zwraca poprzednią wartość argumentu handler dla danego sygnału lub SIG_ERR w przypadku błędu.

Jeśli teraz wystąpi sygnał sig, to najpierw przywraca się domyślną akcję dla tego sygnału, a następnie wywołuje wskazaną funkcję obsługi tak, jakby nastąpiło wywołanie (*handler)(sig). Po powrocie z funkcji obsługi program będzie wznowiony w miejscu, w którym nastąpiło przerwanie sygnałem.

Początkowy stan sygnałów zależy od implementacji, int raise(int sig)

Funkcja raise wysyła do programu sygnał sig; w przypadku niepowodzenia zwraca wartość różną od zera.


Obsługa daty i czasu: nagłówek <time.h>

W nagłówku <time.h> znajdują się deklaracje typów i funkcji służących do obsługi daty i czasu. Niektóre funkcje operują czasem lokalnym, który może być różny od czasu kalendarzowego na skutek np. różnicy stref czasowych. Typy clock_t i time_t są typami arytmetycznymi reprezentującymi czas, a struktura struct tm mieści w sobie składniki czasu kalendarzowego:

int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst;


sekundy, które upłynęły po minucie (0, 61) minuty, które upłynęły po godzinie (0, 59) godziny, które upłynęły od północy (0, 23) dzień miesiąca (1, 31) miesiące, które upłynęły od stycznia (0, 11) lata, które upłynęły od 1900 r. dni, które upłynęły od niedzieli (0, 6) dni, które upłynęły od 1 stycznia (0, 365) znacznik letniej zmiany czasu

Znacznik tm_isdst jest dodatni, gdy obowiązuje czas letni; zero - gdy nie obowiązuje, i ujemny - w przypadku braku takiej informacji.

341


Wyszukiwarka

Podobne podstrony:
ANSI C 9 DODATEK A PRZEWODNIK JĘZYKA C_______—- Gdy wartość całkowita jest przekształcana do typu
ANSI C 9 DODATEK A PRZEWODNIK JĘZYKA C________■ Kwalifikatory typu wskazują specjalne właściwości
ANSI C 9 DODATEK A PRZEWODNIK JĘZYKA C________ jednostka-tłumaczen
ANSI C 9 DODATEK A PRZEWODNIK JĘZYKA C wiersz-sterujący: #    define identyfikator
ANSI C 0 DODATEK B BIBLIOTEKA STANDARDOWA DODATEK B BIBLIOTEKA STANDARDOWAWejście i wyjście: nagłó
ANSI C 1 DODATEK B BIBLIOTEKA STANDARDOWA cznej tablicy. Wywołanie tmpnam(s) wstawia tę nazwę do a
ANSI C 2 DODATEK B BIBLIOTEKA STANDARDOWA Tablica B-1. Przekształcenia funkcji printf Znak Typ
ANSI C 3 DODATEK B BIBLIOTEKA STANDARDOWA Tablica B-2. Przekształcenia funkcji scanf Znak Dana
ANSI C 4 DODATEK B BIBLIOTEKA STANDARDOWA czytaniu ze strumienia. Dla każdego strumienia można wyc
ANSI C 5 DODATEK B BIBLIOTEKA STANDARDOWA ____- różną od zera (prawda), jeśli argument c spełnia p
ANSI C 6 DODATEK B BIBLIOTEKA STANDARDOWA s i t są typu void *, argumenty cs i ct są typu const vo
ANSI C 7 DODATEK B BIBLIOTEKA STANDARDOWA double strtod(const char *s, char **endp) Funkcja strtod
ANSI C 8 DODATEK B BIBLIOTEKA STANDARDOWA ________ char *getenv(const char *name) Funkcja getenv z
ANSI C 0 DODATEK B BIBLIOTEKA STANDARDOWA____ clock_t clock(void) Funkcja clock zwraca czas proces
ANSI C 1 DODATEK B BIBLIOTEKA
Wykorzystanie biblioteki standardowej C Wszystkie nagłówki z C zostały obudowane, aby można było je
ANSI - Amerykański Narodowy Instytut Normalizacji ANSI, (ang.) American National Standards
ANSI C 5 DODATEK A PRZEWODNIK JĘZYKA C_________A2.1 Jednostki leksykalne Istnieje sześć klas jedno
ANSI C 6 DODATEK A PRZEWODNIK JĘZYKA C_____.____A2.5.2 Stałe znakowe Stała znakowa jest ciągiem zł

więcej podobnych podstron