Π€ΡΠ½ΠΊΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ, Π½Π°ΡΠΈΠ½Π°ΡΡΠ΅ΠΉΡΡ Π² ΡΠΎΡΠΊΠ΅ (
pad_rowpad_columnscreen_row_minscreen_col_minscreen_row_maxscreen_col_maxΠΡΡΡ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
pnoutrefreshwnoutrefreshΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΡΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ pad.Ρ (ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 6.8).
1.Β Π Π½Π°ΡΠ°Π»Π΅ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΠ΅ ΠΏΠ°Π½Π΅Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π΅Π΅. ΠΡΡΠ°Π²ΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠ°Π½Π΅Π»ΠΈ (ΠΏΠ°Π½Π΅Π»Ρ Π½Π° 50 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠΈΡΠ΅ ΠΈ Π²ΡΡΠ΅ ΡΠΊΡΠ°Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°):
#include <unistd.h>#include <stdlib.h>#include <curses.h>int main() {Β WINDOW *pad_ptr;Β int x, y;Β int pad_lines;Β int pad_cols;Β char disp_char;Β initscr();Β pad_lines = LINES + 50;Β pad_cols = COLS + 50;Β pad_ptr = newpad(pad_lines, padcols);Β disp_char = 'a';Β for (x = 0; x < pad_lines; x++) {Β Β for (Ρ = 0; Ρ < pad_cols; y++) {Β Β mvwaddch(pad_ptr, x, y, disp_char);Β Β if (disp_char == 'z') disp_char = 'a';Β Β else disp_char++;Β }Β }2.Β Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π°ΡΠΈΡΡΠΉΡΠ΅ ΡΠ°Π·Π½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ Π² ΡΠ°Π·Π½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ ΡΠΊΡΠ°Π½Π°:
Β prefresh(pad_ptr, 5, 7, 2, 2, 9, 9);Β sleep(1);Β prefresh(pad_ptr, LINES + 5, COLS + 7, -5, 5, 21, 19);Β sleep(1);Β delwin(pad_ptr);Β endwin();Β exit(EXIT_SUCCESS);}ΠΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π½Π΅ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Π½Π° ΡΠΈΡ. 6.8.

Π ΠΈΡ. 6.8
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ²
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ·Π½Π°Π»ΠΈ ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° curses, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΈΠΏΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π΅Π³ΠΎ Π²Π΅ΡΡΠΈΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ curses. Π Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° Ρ ΠΏΡΠΎΠΊΡΡΡΠΊΠΎΠΉ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠΏΠΈΡΠΊΠΎΠ².
ΠΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΠΎΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π½Π° ΡΠ΅ΠΊΡΠΈΠΈ ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π½ΡΡΡΠΈ ΡΠ΅ΠΊΡΠΈΠΉ. ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ curses_app.c ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π° Web-ΡΠ°ΠΉΡΠ΅ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π° Wrox (http://www.wrox.com/WileyCDA/). ΠΠ°ΠΊ ΠΈ Π²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ· ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΎΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΈΠ½ΡΠ΅ΡΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° GNU.
ΠΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΡΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π³Π»Π°Π². ΠΠ°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β ΠΏΠΎΡΠΎΠΌΠΎΠΊ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π³Π»Π°Π²Π΅ 2. ΠΠ½ΠΎ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π² ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ, Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΡΠ΅Π½Π°ΡΠΈΡ. Π£ΡΡΠΈΡΠ΅, ΡΡΠΎ Π² ΡΡΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΅ΡΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΡΡΡΠ°Π½ΠΈΠΌ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΡ .
ΠΡ ΡΠ°Π·Π±ΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ΅ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ². Π‘ΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠ½ΡΡΡΠ΅ Π΄Π»Ρ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅; Π·Π΄Π΅ΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΡΠ°Π»ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ²
ΠΠ΅ΡΠ²Π°Ρ ΡΠ΅ΠΊΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΡΡΠΎ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅, ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ .
1.Β ΠΠΊΠ»ΡΡΠΈΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ :
#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <curses.h>#define MAX_STRING 80 /* Π‘Π°ΠΌΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ ΠΎΡΠ²Π΅Ρ */#define MAX_ENTRY 1024 /* Π‘Π°ΠΌΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΠ */#define MESSAGE_LINE 6 /* Π ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΠ°Π·Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ */#define ERROR LINE 22 /*Β Π‘ΡΡΠΎΠΊΠ°Β Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΡΠΈΠ±ΠΎΠΊ */#define Q_LINE 20Β /* Π‘ΡΡΠΎΠΊΠ° Π΄Π»Ρ Π²ΠΎΠΏΡΠΎΡΠΎΠ² */#define PROMPT_LINE 18 /*Β Π‘ΡΡΠΎΠΊΠ°Β Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΡ */2.Β Π’Π΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
current_cdisNULL\0current_catstatic char current_cd[MAX_STRING] = "\0";static char current_cat[MAX_STRING];3.Β Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΡΠ²ΠΈΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ Π² ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΈΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π²ΡΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. ΠΡΡΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ»ΡΡΡΠ΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
tmpnam