ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ OPEN_MAX ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ, Π²ΡΠ·Π²Π°Π² ΡΡΠ½ΠΊΡΠΈΡ sysconf, ΠΊΠ°ΠΊ ΠΌΡ Π²ΡΠΊΠΎΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ. ΠΠ±ΡΡΠ½ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ulimit (Π² Bourne shell ΠΈ KornShell, ΠΊΠ°ΠΊ ΠΌΡ Π²ΡΠΊΠΎΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ) ΠΈΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ limit (Π² Π‘ shell). ΠΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΈ ΡΠ°ΠΌΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ setrlimit (ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Π° Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 7.11 [21]).
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ PIPE_BUF ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ <limits.h>, Π½ΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Posix ΠΎΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΎΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° (Π΄Π»Ρ FIFO, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°Π½Π°Π»Ρ ΠΈΠΌΠ΅Π½ Π½Π΅ ΠΈΠΌΠ΅ΡΡ), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°Π·Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΌΠΎΠ³ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ ΡΠ°Π·Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΌ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌ ΠΈ ΡΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏpoΠ³ΡaΠΌΠΌΡ, Π²ΡΠ·Π²Π°Π² Π»ΠΈΠ±ΠΎ pathconf, Π»ΠΈΠ±ΠΎ fpathconf. Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 4.17 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ²ΠΎΠ΄ΡΡΠΈΠΉ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡ Π΄Π²ΡΡ oΠ³ΡaΠ½ΠΈΡeΠ½ΠΈΠΉ.
ΠΠΈΡΡΠΈΠ½Π³ 4.17. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ PIPE_BUF ΠΈ OPEN_MAX Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ//pipe/pipeconf.c
1 #include "unpipc.h"
2 int
3 main(int argc, char **argv)
4 {
5 if (argc != 2)
6 err_quit("usage: pipeconf <pathname>");
7 printf("PIPE_BUF = %ld. OPEN_MAX = %ld\n",
8 Pathconf(argv[1], _PC_PIPE_BUF), Sysconf(_SC_OPEN_MAX));
9 exit(0);
10 }
ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ², ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΌ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌ:
solaris % pipeconf / Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Solaris 2.6
PIPE_BUF = 5120, OPEN_MAX = 64
solaris % pipeconf /home
PIPE_BUF = 5120, OPEN_MAX = 64
solaris % pipeconf /tmp
PIPE_BUF = 5120, OPEN_MAX = 64
alpha % pipeconf / Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Digital Unix 4.0B
PIPE_BUF = 4096, OPEN_MAX = 4096
alpha % pipeconf /usr
PIPE_BUF = 4096, OPEN_MAX = 4096
ΠΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΡΠ΅ΠΏΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ OPEN_MAX Π² Solaris, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ KornShell:
solaris % ulimit βnS ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ², ΠΌΡΠ³ΠΊΠΎΠ΅ΠΎ Π³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅
64
solaris % ulimit βNh ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ², ΠΆΠ΅ΡΡΠΊΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅
1024
solaris % ulimit βnS 512 ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΌΡΠ³ΠΊΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π² 512
solaris % pipeconf / ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²Π½Π΅ΡΠ΅Π½Π½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
PIPE_BUF = 5120, OPEN_MAX = 512
ΠΠ ΠΠΠΠ§ΠΠΠΠ
Π₯ΠΎΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ PIPE_BUF Π΄Π»Ρ FIFO, Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΡΠ°ΠΉΠ», Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΅Π΄ΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ.
Π Π³Π»Π°Π²Π΅ 2 [21] ΠΎΠΏΠΈΡΠ°Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ fpathconf, pathconf ΠΈ sysconf, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡ ΡΠ΄ΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π‘ΡΠ°Π½Π΄Π°ΡΡ Posix.1 ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ 12 ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΡΡ Ρ _Π Π‘_, ΠΈ 52, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΡΡ Ρ _SC_. Π‘ΠΈΡΡΠ΅ΠΌΡ Digital Unix 4.0B ΠΈ Solaris 2.6 ΡΠ°ΡΡΠΈΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΎΠΊΠΎΠ»ΠΎ 100 ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ sysconf.
ΠΠΎΠΌΠ°Π½Π΄Π° getconf ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Posix.2 ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΡΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
alpha % getconf OPEN_MAX
4096
alpha % getconf PIPE_BUF /
4096
4.12. Π Π΅Π·ΡΠΌΠ΅
ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ Π΄Π»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ (Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅) ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄, Π° ΡΠ°ΠΊΠΆΠ΅ Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ β ΡΠ°ΡΡΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡ Π΄ΠΎΡΠ΅ΡΠ½Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π°, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π³ΠΎΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² (piΡΠ΅, fork, close, exec ΠΈ waitpid), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ popen ΠΈ pclose, ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π΅ΡΡΡ Π½Π° ΡΠ΅Π±Ρ Π²ΡΠ΅ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄.
ΠΠ°Π½Π°Π»Ρ FIFO ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ, Π½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ mkfifo ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠΊΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ open. ΠΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ FIFO ΡΠ»Π΅Π΄ΡΠ΅Ρ Π±ΡΡΡ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½, Π° Π·Π°Π²ΠΈΡΠΈΡ ΡΡΠΎ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΡΠ»ΠΎΠ²ΠΈΠΉ (ΡΠΌ. ΡΠ°Π±Π». 4.1).
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ ΠΈ FIFO, ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠΈΠΏΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅Ρ: ΠΎΠ΄ΠΈΠ½ ΡΠ΅ΡΠ²Π΅Ρ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅ΡΡ. ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ Π΅Π΄ΠΈΠ½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°; ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ·Π²ΠΈΠΌΡ Π΄Π»Ρ Π°ΡΠ°ΠΊ ΡΠΈΠΏΠ° Β«ΠΎΡΠΊΠ°Π· Π² ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠΈΒ». ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ²ΠΎΠΉΡΡΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΈ FIFO ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ Π½ΠΈΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π±Π°ΠΉΡΠΎΠ², Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ TCP. ΠΠ΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π½Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π΄Π²ΡΡ Π³Π»Π°Π²Π°Ρ , ΡΡΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΡΡΡΠ°Π²Π»ΡΡΡ Π³ΡΠ°Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΏΠΈΡΡΠΌΠΈ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Π² Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΠ°Ρ UDP.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ
1. ΠΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ ΠΎΡ ΡΠΈΡ. 4.3 ΠΊ ΡΠΈΡ. 4.4: ΡΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ, Π΅ΡΠ»ΠΈ Π±Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ Π·Π°ΠΊΡΡΠ²Π°Π» Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ (close(fd[1]))?
2. ΠΠΏΠΈΡΡΠ²Π°Ρ mkfifo Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 4.6, ΠΌΡ ΡΠΊΠ°Π·Π°Π»ΠΈ, ΡΡΠΎ Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ FIFO ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ mkfifΠΎ, ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° EEXIST, ΠΈ Π²ΡΠ·Π²Π°ΡΡ open, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ. Π§ΡΠΎ Π΅ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΡΠ½Π°ΡΠ°Π»Π° open, Π° Π·Π°ΡΠ΅ΠΌ mkfifΠΎ, Π΅ΡΠ»ΠΈ FIFO Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ?
3. Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ popen Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 4.5, Π΅ΡΠ»ΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°?
4. Π£Π΄Π°Π»ΠΈΡΠ΅ Π²ΡΠ·ΠΎΠ² open Π΄Π»Ρ FIFO ΡΠ΅ΡΠ²Π΅ΡΠ° Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 4.10 ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ Π»ΠΈ ΡΡΠΎ ΠΊ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
5. Π Π»ΠΈΡΡΠΈΠ½Π³Ρ 4.10: ΠΌΡ ΠΎΡΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ° Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ° Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ open, ΠΏΠΎΠΊΠ° FIFO Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΊΡΡΡ Π½Π° Π·Π°ΠΏΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ. ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ open Π·Π°Π²Π΅ΡΡΠ°Π»ΠΈ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»ΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ readline?
6. Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 4.11, Π΅ΡΠ»ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π²ΡΠ·ΠΎΠ²ΠΎΠ² open?
7. ΠΠΎΡΠ΅ΠΌΡ ΡΠΈΠ³Π½Π°Π» ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ°Π½Π°Π» FIFO ΠΎΡΠΊΡΡΡ Π½Π° Π·Π°ΠΏΠΈΡΡ, ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠΈΡΠ°ΡΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π° Π½Π΅ ΡΠΈΡΠ°ΡΡΠ΅ΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΠΈΡΡΡΠ΅Π³ΠΎ?
8. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΡΠ΅ΡΡΠΈΡΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΠΈ fstat ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡΠΎΠ² Π² FIFO Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ»Ρ st_size ΡΡΡΡΠΊΡΡΡΡ stat.
9. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΡΠ΅ΡΡΠΈΡΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ select ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΊΠ°Π½Π°Π»Π°, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°ΠΊΡΡΡ Π²ΡΠΎΡΠΎΠΉ ΠΊΠΎΠ½Π΅Ρ.
ΠΠΠΠΠ 5
ΠΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Posix
5.1. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠ²ΡΠ·Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π° ΠΏΠΎΡΠΎΠΊΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΠΈΡ ΠΎΡΡΡΠ΄Π°. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π·Π°ΠΏΠΈΡΡ (Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 4.10), ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π΅Π³ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Π΅ΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ. ΠΠ»Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΡ ΠΎΠΆΠΈΠ΄Π°ΡΡΠ΅Π³ΠΎ Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΈ FIFO, Π² ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π·Π°ΠΏΠΈΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡΠΈΠΉ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡ.
ΠΡΠΎΡΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ Π·Π°Π²Π΅ΡΡΠΈΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. ΠΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ, ΡΡΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΠΆΠΈΠ²ΡΡΠ΅ΡΡΡΡ ΡΠ΄ΡΠ° (kernel persistence, ΡΠ°Π·Π΄Π΅Π» 1.3). ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ ΠΈΡ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΈ FIFO. Π Π³Π»Π°Π²Π΅ 4 Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅, ΠΎΡΡΠ°ΡΡΠΈΠ΅ΡΡ Π² ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅, ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π·Π°ΠΊΡΠΎΡΡ Π΅Π³ΠΎ.
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Posix, Π° Π² Π³Π»Π°Π²Π΅ 6 β ΡΡΠ°Π½Π΄Π°ΡΡΠ° System V. Π€ΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΡΡ ΠΎΠΆΠΈ, Π° Π³Π»Π°Π²Π½ΡΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ:
β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Posix Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΠΌΠΎΠ΅ ΡΡΠ°ΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ Π½Π°ΠΈΠ²ΡΡΡΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ System V ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ;
β ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Posix ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΠ³Π½Π°Π» ΠΈΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΈ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΡΡΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ System V Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ.
ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ:
β ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ (Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅, Posix) Π»ΠΈΠ±ΠΎ ΡΠΈΠΏ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΠΏΠ° long, System V);
β Π΄Π»ΠΈΠ½Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½ΡΠ»Π΅Π²ΠΎΠΉ;
β ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π°Π½Π½ΡΠ΅ (Π΅ΡΠ»ΠΈ Π΄Π»ΠΈΠ½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡΠ»ΠΈΡΠ½Π° ΠΎΡ 0).
ΠΡΠΈΠΌ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΈ FIFO. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π΄Π²Π΅ ΡΠ°ΡΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π±Π°ΠΉΡΠΎΠ²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π³ΡΠ°Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΈΡ ΡΠΈΠΏ. ΠΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 4.10 ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ ΠΈ FIFO. ΠΠ° ΡΠΈΡ. 5.1 ΠΏΠΎΠΊΠ°Π·Π°Π½ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ Π²ΠΈΠ΄ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.