if (setjmp() == 0)
/* ΠΏΠΎΡΠ»Π΅ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° */
else
/* ΠΏΠΎΡΠ»Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΈΠ· longjmp */
void longjmp(jmp_buf env, int val);
longjmp Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΡ Π² ΡΠ°ΠΌΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ Π²ΡΠ·ΠΎΠ²Π΅ setjmp, ΠΏΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΠ· env; Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΡΡΠ½ΠΊΡΠΈΡ setjmp ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π»Π° ΠΈ Π²Π΅ΡΠ½ΡΠ»Π° Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ val. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌ, Π΅ΡΠ»ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ longjmp ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ Π²ΡΠ·ΠΎΠ² setjmp, ΡΠΆΠ΅ "ΠΎΡΡΠ°Π±ΠΎΡΠ°Π»Π°" ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΠ»Π° Π²ΠΎΠ·Π²ΡΠ°Ρ. ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅Π»ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ longjmp; setjmp Π½Π΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
B9. Π‘ΠΈΠ³Π½Π°Π»Ρ: <signal.h>
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» <signal.h> ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅, Π²ΡΠ·Π²Π°Π½Π½ΠΎΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π² Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ .
void (*signal(int sig, void (*handler)(int)))(int)
signal ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ. ΠΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ handler ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ SIG_DFL, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠ°Ρ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ "ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ"; Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ handler ΡΠ°Π²Π½ΠΎ SIG_IGN, ΡΠΎ ΡΠΈΠ³Π½Π°Π» ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ; Π² ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ handler Ρ ΡΠΈΠΏΠΎΠΌ ΡΠΈΠ³Π½Π°Π»Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. Π ΡΠΈΡΠ»ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ Π²ΠΈΠ΄ΠΎΠ² ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Π²Ρ ΠΎΠ΄ΡΡ:
SIGABRT Π°Π²Π°ΡΠΈΠΉΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡ abort; SIGFPE Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°: Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° 0 ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅; SIGILL Π½Π΅Π²Π΅ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΈ (Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°); SIGINT Π·Π°ΠΏΡΠΎΡ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅; SIGSEGV Π½Π΅Π²Π΅ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΡ ΠΎΠ΄ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ; SIGTERM ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠ»Π°Π½Π½ΠΎΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.signal Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ handler Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°, ΠΈΠ»ΠΈ SIGERR Π² ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠΎΠ³Π΄Π° Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ³Π½Π°Π» sig, ΡΠ½Π°ΡΠ°Π»Π° Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ "ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ", ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π·Π°Π΄Π°Π½Π½Π°Ρ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ handler, Ρ.Π΅. ΠΊΠ°ΠΊ Π±Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ² (*handler)(sig). ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ handler Π²Π΅ΡΠ½Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°Π·Π°Π΄, ΡΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΡΡΡΡ Ρ ΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ Π·Π°ΡΡΠ°Π» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈΡΠ΅Π΄ΡΠΈΠΉ ΡΠΈΠ³Π½Π°Π». ΠΠ°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
int raise(int sig)
raise ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΈΠ³Π½Π°Π» sig. Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠ΄Π°ΡΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
B10. Π€ΡΠ½ΠΊΡΠΈΠΈ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ: βΉtime.hβΊ
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» <time.h> ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ ΡΠΈΠΏΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π΄Π°ΡΠΎΠΉ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ ΠΌΠ΅ΡΡΠ½ΡΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ½ΠΎΠ³ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠ²ΡΠ·ΠΈ Ρ Π·ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π’ΠΈΠΏΡ clΠΎΡk_t ΠΈ time_t - Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΠΏΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, a struct tm ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ:
int tm_sec; - ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΠΌΠΈΠ½ΡΡΡ (0,61); -- I.B.: Π²ΡΠ΅ ΠΆΠ΅ Π½Π°Π²Π΅ΡΠ½ΠΎ ΠΎΡ 0 Π΄ΠΎ 59
int tm_min; - ΠΌΠΈΠ½ΡΡΡ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΠ° (0,59);
int tm_hour; - ΡΠ°ΡΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ½ΠΎΡΠΈ (0,23);int tm_mday; - ΡΠΈΡΠ»ΠΎ ΠΌΠ΅ΡΡΡΠ° (1,31);
int tm_mon; - ΠΌΠ΅ΡΡΡΡ Ρ ΡΠ½Π²Π°ΡΡ(0,11);
int tm_year; - Π³ΠΎΠ΄Ρ Ρ 1900;
int tm_wday; - Π΄Π½ΠΈ Ρ Π²ΠΎΡΠΊΡΠ΅ΡΠ΅Π½ΡΡ (0,6);
int tm_yday; - Π΄Π½ΠΈ Ρ 1 ΡΠ½Π²Π°ΡΡ (0,365);
int tm_isdst; - ΠΏΡΠΈΠ·Π½Π°ΠΊ Π»Π΅ΡΠ½Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ tm_isdst - ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠ΅Π·ΠΎΠ½, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ΠΌΡ ΡΡΡΠΎΠΊ ΡΠ΄Π²ΠΈΠ½ΡΡΠΎ Π½Π° 1 ΡΠ°Ρ Π²ΠΏΠ΅ΡΠ΅Π΄, Π½ΡΠ»Ρ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅, Π΅ΡΠ»ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π°.
clock_t clock(void)
clock Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ, ΡΠΈΠΊΡΠΈΡΡΠ΅ΠΌΠΎΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ ΠΎΡ Π½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΠ»ΠΈ -1, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ Π½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ. ΠΠ»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΡΠΌΡΠ»Π° clock()/CLOCKS_PER_SEC.
time_t time(time_t *tp)
time Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ (Ρ. Π΅. Π²ΡΠ΅ΠΌΡ, ΠΏΡΠΎΡΠ΅Π΄ΡΠ΅Π΅ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π°ΡΡ, - ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΡΠ»Π΅ 0 Ρ 00 ΠΌΠΈΠ½ 00 Ρ GMT 1-Π³ΠΎ ΡΠ½Π²Π°ΡΡ 1970 Π³. - ΠΏΡΠΈΠΌΠ΅Ρ. ΡΠ΅Π΄.) ΠΈΠ»ΠΈ -1, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ΠΌΡ Π½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ. ΠΡΠ»ΠΈ tp Π½Π΅ ΡΠ°Π²Π½ΠΎ NULL, ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΈ Π² *tp.
double difftime(time_t time2, time_t time1)
difftime Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π·Π½ΠΎΡΡΡ time2 - time1, Π²ΡΡΠ°ΠΆΠ΅Π½Π½ΡΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ .
time_t mktime(struct tm *tp)
mktime ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΡΡΡΡΠΊΡΡΡΠΎΠΉ *tp, Π² ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ½ΠΎΠ΅, Π²ΡΠ΄Π°Π²Π°Ρ Π΅Π³ΠΎ Π² ΡΠΎΠΌ ΠΆΠ΅ Π²ΠΈΠ΄Π΅, ΡΡΠΎ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ time. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Ρ . Π€ΡΠ½ΠΊΡΠΈΡ mktime Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ -1, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌΠΎ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ.
char *asctime(const struct tm *tp)
asctime ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ Π²ΡΠ΅ΠΌΡ Π² ΡΡΡΡΠΊΡΡΡΠ΅ *tp Π² ΡΡΡΠΎΠΊΡ Π²ΠΈΠ΄Π°
Sun Jan 3 15:14:13 1988\n\0
char *ctime(const time_t *tp)
ctime ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π² ΠΌΠ΅ΡΡΠ½ΠΎΠ΅, ΡΡΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ asctime(localtime(tp))
struct tm *gmtime(const time_t *tp)
gmtime ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΠΎ ΠΡΠ΅ΠΌΠΈΡΠ½ΠΎΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ (Coordinated Universal Time - UTC). ΠΡΠ΄Π°ΡΡ NULL, Π΅ΡΠ»ΠΈ UTC Π½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ. ΠΠΌΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, gmtime, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡ Greenwich Mean Time (ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎ ΠΡΠΈΠ½Π²ΠΈΡΡΠΊΠΎΠΌΡ ΠΌΠ΅ΡΠΈΠ΄ΠΈΠ°Π½Ρ).
struct tm *localtime(const time_t *tp)
localtime ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ *tp Π² ΠΌΠ΅ΡΡΠ½ΠΎΠ΅.
size_t strftime(char *s, size_t smax, const char *fmt, const struct tm *tp)
strftime ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΄Π°ΡΠ΅ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΠ· *tp Π² ΡΡΡΠΎΠΊΡ s ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΎΡΠΌΠ°ΡΡ fmt, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠΈΡ ΡΠ΅ΡΡ Ρ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠΌ Π² ΡΡΠ½ΠΊΡΠΈΠΈ printf. ΠΠ±ΡΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» '\0') ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ Π² s. ΠΠ°ΠΆΠ΄Π°Ρ ΠΏΠ°ΡΠ°, ΡΠΎΡΡΠΎΡΡΠ°Ρ ΠΈΠ· % ΠΈ Π±ΡΠΊΠ²Ρ, Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΎΡΠΌΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΌΠ΅ΡΡΠ½ΡΠΌ ΡΡΠ°Π΄ΠΈΡΠΈΡΠΌ. Π s ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ smax ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²; strftime Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π±Π΅Π· ΡΡΠ΅ΡΠ° '\0' ΠΈΠ»ΠΈ Π½ΡΠ»Ρ, Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π±ΠΎΠ»ΡΡΠ΅ smax.
%a ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π½Ρ Π½Π΅Π΄Π΅Π»ΠΈ %A ΠΏΠΎΠ»Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄Π½Ρ Π½Π΅Π΄Π΅Π»ΠΈ %b ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΡΠ° %B ΠΏΠΎΠ»Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΡΠ° %c ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ %d Π΄Π΅Π½Ρ ΠΌΠ΅ΡΡΡΠ° (01-31) %H ΡΠ°Ρ (24-ΡΠ°ΡΠΎΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ) (00-23) %I ΡΠ°Ρ (12-ΡΠ°ΡΠΎΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ) (01-12) %j Π΄Π΅Π½Ρ ΠΎΡ Π½Π°ΡΠ°Π»Π° Π³ΠΎΠ΄Π° (001-366) %m ΠΌΠ΅ΡΡΡ (01-12) %M ΠΌΠΈΠ½ΡΡΠ° (00-59) %p ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ AM ΠΈΠ»ΠΈ Π Π (Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΠ΄Π½Ρ) %S ΡΠ΅ΠΊΡΠ½Π΄Π° (00-61) %U Π½Π΅Π΄Π΅Π»Ρ ΠΎΡ Π½Π°ΡΠ°Π»Π° Π³ΠΎΠ΄Π° (ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π²ΠΎΡΠΊΡΠ΅ΡΠ΅Π½ΡΠ΅ - 1-ΠΉ Π΄Π΅Π½Ρ Π½Π΅Π΄Π΅Π»ΠΈ) (00-53) %w Π΄Π΅Π½Ρ Π½Π΅Π΄Π΅Π»ΠΈ (0-6, Π½ΠΎΠΌΠ΅Ρ Π²ΠΎΡΠΊΡΠ΅ΡΠ΅Π½ΡΡ - 0) %W Π½Π΅Π΄Π΅Π»Ρ ΠΎΡ Π½Π°ΡΠ°Π»Π° Π³ΠΎΠ΄Π° (ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊ - 1-ΠΉ Π΄Π΅Π½Ρ Π½Π΅Π΄Π΅Π»ΠΈ) (00-53) %x ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°ΡΡ %X ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ %y Π³ΠΎΠ΄ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π²Π΅ΠΊΠ° (00-99) %Y Π³ΠΎΠ΄ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π²Π΅ΠΊΠ° %Z Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·ΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π΅ΡΡΡ %% %B11. ΠΠ°Π²ΠΈΡΡΡΠΈΠ΅ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠ΅Π΄Π΅Π»Ρ: <limits.h> ΠΈ <float.h>
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» <limits.h> ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΠΈΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ, Π½ΠΎ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
CHAR_BIT 8 Π±ΠΈΡΠΎΠ² Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ char SCHAR_MAX UCHAR_MAX ΠΈΠ»ΠΈ SCHAR_MAX ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ char CHAR_MIN 0 ΠΈΠ»ΠΈ SCHAR_MIN ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ char INT_MAX +32767 ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ int INT_MIN -32767 (I.B.:ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ -32768) ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ int LONG_MAX +2147463647 ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ long LONG_MIN -2147483647 (I.B.:ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ -2147483648) ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ long SCHAR_MAX +127 ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ signed char SCHAR_MIN -127 (I.B.:ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ -128) ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ signed char SHRT_MAX +32767 ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ short SHRT_MIN -32767 (I.B.:ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ -32768) ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ short UCHAR_MAX 255 ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ unsigned char UINT_MAX 65535 ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ unsigned int ULONG_MAX 4294967295 ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ unsigned long USHRT_MAX 65535 ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ unsigned shortΠΠΌΠ΅Π½Π°, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅, Π²Π·ΡΡΡ ΠΈΠ· <float.h> ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ, ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ΅ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ (Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡΡ) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π²Π΅Π»ΠΈΡΠΈΠ½. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.