Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 13.10. ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Ρ FIFO
1.Β Π‘Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ (ΠΏΡΡΡΠΎΠΉ) ΡΠ°ΠΉΠ» FIFO:
$ <b>cat < /tmp/my_fifo</b>
2.Β Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² FIFO. ΠΠ°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΡΠΌΠΈΠ½Π°Π», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ΅ΡΠ²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ "Π·Π°Π²ΠΈΡΠ»Π°" Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ
-Π½ΠΈΠ±ΡΠ΄Ρ Π΄Π°Π½Π½ΡΡ
Π² FIFO:
$ <b>echo "Hello World" > /tmp/my_fifo</b>
ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
cat
. ΠΡΠ»ΠΈ Π½Π΅ ΠΏΠΎΡΡΠ»Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π΄Π°Π½Π½ΡΡ
Π² ΠΊΠ°Π½Π°Π» FIFO, ΠΊΠΎΠΌΠ°Π½Π΄Π°
cat
Π±ΡΠ΄Π΅Ρ ΠΆΠ΄Π°ΡΡ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π²Ρ Π½Π΅ ΠΏΡΠ΅ΡΠ²Π΅ΡΠ΅ Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ ΠΊΠ»Π°Π²ΠΈΡ <Ctrl>+<C>.
3.Β ΠΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ±Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Ρ ΠΏΠ΅ΡΠ²ΡΡ Π² ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ:
$ <b>cat < /tmp/my_fifo &</b>
[1] 1316
$ <b>echo "Hello World" > /tmp/my_fifo</b>
Hello World
[1]+ DoneΒ Β cat </tmp/my_fifo
$
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΠΊΠ°Π½Π°Π»Π΅ FIFO Π½Π΅ Π±ΡΠ»ΠΎ Π΄Π°Π½Π½ΡΡ
, ΠΎΠ±Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ,
cat
ΠΈ
echo
, ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΎΠΆΠΈΠ΄Π°Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ
-Π½ΠΈΠ±ΡΠ΄Ρ Π΄Π°Π½Π½ΡΡ
ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΄Π»Ρ ΠΈΡ
ΡΡΠ΅Π½ΠΈΡ.
ΠΠ° ΡΡΠ΅ΡΡΠ΅ΠΌ ΡΠ°Π³Π΅ ΠΏΡΠΎΡΠ΅ΡΡ
cat
Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΠΎΠ³Π΄Π°
echo
Π΄Π΅Π»Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΠΌΠ°Π½Π΄Π°
cat
ΡΠΈΡΠ°Π΅Ρ ΠΈΡ
ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΎΠ½Π° Π·Π°ΡΠ΅ΠΌ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ, Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
cat
Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ, Ρ.ΠΊ. ΠΊΠ°Π½Π°Π» ΡΠΆΠ΅ Π·Π°ΠΊΡΡΠ»ΡΡ, ΠΊΠΎΠ³Π΄Π° Π·Π°Π²Π΅ΡΡΠΈΠ»Π°ΡΡ Π²ΡΠΎΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ²ΡΠ°Ρ Π΄Π°Π½Π½ΡΠ΅ Π² FIFO, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ·ΠΎΠ²Ρ
read
Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
cat
Π²Π΅ΡΠ½ΡΡ 0 Π±Π°ΠΉΡΠΎΠ², ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Ρ ΡΡΠΈΠΌ ΠΊΠΎΠ½Π΅Ρ ΡΠ°ΠΉΠ»Π°.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π»ΠΈ, ΠΊΠ°ΠΊ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΠΊΠ°Π½Π°Π»Ρ FIFO ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ Π½ΠΈΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ FIFO.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΊΠ°Π½Π°Π»Π°, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ
pipe
, FIFO ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ», Π½ΠΎ Π½Π΅ ΠΊΠ°ΠΊ ΠΎΡΠΊΡΡΡΡΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ, ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠΊΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ· Π½Π΅Π³ΠΎ ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ Π² Π½Π΅Π³ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΡ
. ΠΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΈ Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°Π½Π°Π» FIFO Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
open
ΠΈ
close
, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠ°Π½Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΠΈ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ, Π½ΠΎ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ. ΠΡΠ·ΠΎΠ²Ρ
open
ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ FIFO Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
ΠΡΠΊΡΡΡΠΈΠ΅ FIFO Ρ ΠΏΠΎΠΌΠΎΡΡΡ open
ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΠΊΠ°Π½Π°Π»Π° FIFO ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΊΡΡΡΡ FIFO Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ Ρ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ
O_RDWR
. ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π°ΡΡΡΠΈΡ ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ°Π·ΡΠΌΠ½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, Ρ.ΠΊ., ΠΎΠ±ΡΡΠ½ΠΎ ΠΊΠ°Π½Π°Π» FIFO ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
Π² ΠΎΠ΄Π½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅Ρ Π½ΡΠΆΠ΄Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅
O_RDWR
. ΠΡΠΎΡΠ΅ΡΡ ΡΡΠ°Π» Π±Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠ²ΠΎΠΉ Π²ΡΠ²ΠΎΠ΄, Π΅ΡΠ»ΠΈ Π±Ρ ΠΊΠ°Π½Π°Π» Π±ΡΠ» ΠΎΡΠΊΡΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ.
ΠΡΠ»ΠΈ Π²Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ Π² ΠΎΠ±ΠΎΠΈΡ
Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΡ
, Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΡ FIFO ΠΈΠ»ΠΈ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ
ΠΊΠ°Π½Π°Π»ΠΎΠ², ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ, ΠΈΠ»ΠΈ (ΡΡΠΎ Π½Π΅ΡΠΈΠΏΠΈΡΠ½ΠΎ) ΡΠ²Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° Π΄Π°Π½Π½ΡΡ
, Π·Π°ΠΊΡΡΠ² ΠΈ ΡΠ½ΠΎΠ²Π° ΠΎΡΠΊΡΡΠ² ΠΊΠ°Π½Π°Π» FIFO. ΠΡ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΌΡ ΠΎΠ±ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² FIFO ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅.
ΠΡΡΠ³ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠΊΡΡΡΠΈΠ΅ΠΌ ΠΊΠ°Π½Π°Π»Π° FIFO ΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ»Π°Π³Π°
open_flag
(Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
open
) ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ
O_NONBLOCK
. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ°
open
ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ·ΠΎΠ²Π°
open
, Π½ΠΎ ΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ²
read
ΠΈ
write
Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ΅ΡΡΡΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ
ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
O_RDONLY
,
O_WRONLY
ΠΈ
O_NONBLOCK
ΡΠ»Π°Π³Π°. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡ
Π²ΡΠ΅ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ.
open(const char *path, O_RDONLY);
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ·ΠΎΠ²
open
Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ, ΠΎΠ½ Π½Π΅ Π²Π΅ΡΠ½Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΠΎΡΠΊΡΠΎΠ΅Ρ ΡΡΠΎΡ FIFO Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ. ΠΡΠΎ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ
cat
.
open(const char *path, O_RDONLY | O_NONBLOCK);
Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠ·ΠΎΠ²
open
Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈ Π²Π΅ΡΠ½Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π·Ρ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΊΠ°Π½Π°Π» FIFO Π½Π΅ Π±ΡΠ» ΠΎΡΠΊΡΡΡ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ.
open(const char *path, O_WRONLY);
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ·ΠΎΠ²
open
Π±ΡΠ΄Π΅Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΠΎΡΠΊΡΠΎΠ΅Ρ ΡΠΎΡ ΠΆΠ΅ ΠΊΠ°Π½Π°Π» FIFO Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ.
open(const char *path, O_WRONLY | O_NONBLOCK);
ΠΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ Π²ΡΠ·ΠΎΠ²Π° Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΠΎΡΠΊΡΡΠ» ΡΡΠΎΡ ΠΊΠ°Π½Π°Π» FIFO Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ,
open
Π²Π΅ΡΠ½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ, -1, ΠΈ FIFO Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΊΡΡΡ. ΠΡΠ»ΠΈ Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΎΡΠΊΡΡΠ²ΡΠΈΠΉ FIFO Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΊΠ°Π½Π°Π» FIFO.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ
O_NONBLOCK
Ρ
O_RDONLY
ΠΈ
O_WRONLY
, Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ Π²ΡΠ·ΠΎΠ²
open
Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΠΎΡΠΊΡΡΠ» ΠΊΠ°Π½Π°Π» Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ, Π° Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ Π²ΡΠ·ΠΎΠ²
open
Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ. ΠΠ° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Π°
close
ΡΠ»Π°Π³
O_NONBLOCK
Π²Π»ΠΈΡΠ½ΠΈΡ Π½Π΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ.
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 13.11.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 13.11. ΠΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² FIFO
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Π°
open
Ρ ΡΠ»Π°Π³ΠΎΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ
O_NONBLOCK
, Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π²ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ-ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π²Ρ Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΎΠ΄Π½Ρ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ fifo2.c, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠ°Π½Π°Π»ΠΎΠ² FIFO ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π΅ΠΉ ΡΠ°Π·Π½ΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
1.Β ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ², Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ
#define
ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ:
#include <unistd.h>