#include <sys/iofunc.h>
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²Π°ΡΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ Π°ΡΡΠΈΠ±ΡΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΡΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ Π°ΡΡΠΈΠ±ΡΡΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π°ΡΡΠΈΠ±ΡΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ β Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ»ΡΡΠ°Ρ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ OCB (ΠΈ ΠΏΠΎ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ°ΠΌΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ).
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ²
ΠΠΎ Π½Π°ΡΡΠΎΡΡΠ΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΌΡ ΠΈΠ·Π±Π΅Π³Π°Π»ΠΈ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠΎΠ² ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ². ΠΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΈ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, io_read()), ΠΈ ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ΄ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π ΡΡΠΎ Π΅ΡΠ»ΠΈ Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ ? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ read() ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΠΏΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎ ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠΈΠΌΠ²ΠΎΠ»Π°. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅.
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠ΅Ρ ΠΆΠ΅ ΡΠ°ΠΌΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ Π² Π³Π»Π°Π²Π΅ Β«ΠΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈΒ» β Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠ° ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠ°Π΄ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠ³Π΄Π° ΠΏΡΠΈΠ±ΡΠ²Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΌΡ Π·Π°ΠΏΡΠΎΡΡ read(), ΠΎΠ½ΠΎ ΠΏΡΠΈΠ±ΡΠ²Π°Π΅Ρ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ (receive ID), ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ. ΠΡΠ»ΠΈ Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² Π΅ΡΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ ΡΠ°Π½Π΅Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ . ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ, Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ (ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄Π»Ρ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ» Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ), ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. Π Π΅Π°Π»ΡΠ½ΠΎ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΡΠΎΠΊ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΡΠ» ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ β Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡΡ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π» Π±Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΈΠ· Π²Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ _RESMGR._NOREPLY. ΠΡΠΎ ΡΠΊΠ°ΠΆΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ², ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π°, Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΠΎΠΊΠ° ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ Π½Π°Π΄ΠΎ.
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ·ΠΆΠ΅, ΠΏΠΎ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ , Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ²Π΅ΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ²Π΅ΡΠ°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠΌ-Π°ΡΡΠΎΠ², ΠΊΠ°ΠΊ ΠΌΡ ΡΡΠΎ Π΄Π΅Π»Π°Π»ΠΈ Π² Π³Π»Π°Π²Π΅ Β«Π§Π°ΡΡ, ΡΠ°ΠΉΠΌΠ΅ΡΡ ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡΒ» (ΠΏΠ°ΡΠ°Π³ΡΠ°Ρ Β«ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΡΠ°ΠΉΠΌ-Π°ΡΡΡΒ»). ΠΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Π²ΠΊΡΠ°ΡΡΠ΅, ΡΠ°ΠΌ ΠΏΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ Π·Π°ΠΏΡΠΎΡ ΡΡΠΈΡΠ°Π»ΡΡ Β«ΠΏΡΠΎΡΡΠΎΡΠ΅Π½Π½ΡΠΌΒ», ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°Π» ΠΏΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠΌΡ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ Π½Π΅ΠΊΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΠΎΠ·Π²ΡΠ°Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΡΠ°Π½Π΅Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ io_read() ΠΌΡ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°Ρ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ io_read() (Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ»ΡΠ°Π²ΠΈΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°Β»), io_read() ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΡΠΎΠΆΠ΅. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ΠΌ, Ρ ΡΠ΅ΡΠΈΠ» ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π·Π΄Π΅ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΈ ΠΊΠΎΠ³Π΄Π° Π²Π°ΡΠ΅ΠΉ io_read() ΠΌΠΎΠ³Π»ΠΎ Π±Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, Π° Π½Π΅ Β«ΡΡΡΡΠ΅Β» Π΄Π°Π½Π½ΡΠ΅.
ΠΡΠ»ΠΈ Π²Ρ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΡΠ΅ΠΉ, ΠΈ ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ ΡΠ»Π°Π³ΠΎΠΌ _RESMGR_FLAG_DIR, ΡΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ io_read(). ΠΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ Β«ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡΒ», ΡΠΎ Π²Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Π±ΡΠ΄Π΅Ρ Β«ΡΠ°ΠΉΠ»ΠΎΠΌΒ». ΠΡΠ»ΠΈ ΠΆΠ΅, Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ _RESMGR_FLAG_DIR, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° Β«ΠΊΠ°ΡΠ°Π»ΠΎΠ³Β». ΠΠΈΠΊΡΠΎ, ΠΊΡΠΎΠΌΠ΅ Π²Π°Ρ, Π½Π΅ Π·Π½Π°Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΎ ΠΈ Π΅ΡΡΡ ΠΎΡΠ²Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ io_read() ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ².
ΠΠΎΠΎΠ±ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡβ¦ΠΠΎΠΎΠ±ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° β ΡΡΠΎ ΠΏΠΎΡΡΠΈ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ Β«ΡΡΡΡΡ Β» Π΄Π°Π½Π½ΡΡ , Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ:
β’ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΡΡΡΠΊΡΡΡ ΡΠΈΠΏΠ° struct dirent;
β’ ΡΡΠΈ ΡΡΡΡΠΊΡΡΡΡ struct dirent Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ.
ΠΠ΅ΡΠ²ΡΠΉ ΠΏΡΠ½ΠΊΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΠΌΡ Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡ struct dirent. ΠΡΠ»ΠΈ Π²ΠΎΡΠ΅ΠΌΡ ΡΡΡΡΠΊΡΡΡ Π½Π΅ Π²ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠΎΡΠΎΠΉ ΠΏΡΠ½ΠΊΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½. ΠΠ½ ΡΠΏΠΎΠΌΡΠ½ΡΡ Π·Π΄Π΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ struct dirent ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Β«Ρ ΠΈΡΡΠ΅Π΅Β», ΡΠ΅ΠΌ Β«ΡΡΡΠΎΠΉΒ» ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ Π΄Π°Π½Π½ΡΠΌ Π² ΡΠ»ΡΡΠ°Π΅ Ρ Β«ΠΎΠ±ΡΡΠ½ΠΎΠΉΒ» io_read().
Π‘ΡΡΡΠΊΡΡΡΠ° struct dirent ΠΈ Π΅Π΅ Π΄ΡΡΠ·ΡΡΠΠ°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΡΡΡΡΠΊΡΡΡΡ struct dirent, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎ, ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ io_read() Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Ρ, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ Π΄Π΅Π»ΠΎ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π½ΠΈΡ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠΎΠΉ struct dirent ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ΄ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ.
Π§ΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌΠΈ, ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ closedir(), opendir(), readdir(), rewinddir(), seekdir() ΠΈ telldir().
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡ ΠΎΠ΄ΡΡΠ²ΠΎ Ρ Β«Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΌΠΈΒ» ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² (ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΡΠΈΠΏΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ):
Π€ΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌΠΈ Π€ΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ closedir() close() IO_CLOSE_DUP opendir() open() _IO_CONNECT readdir() read() _IO_READ rewinddir() lseek() _IO_LSEEK seekdir() lseek() _IO_LSEEK telldir() tell() _IO_LSEEKΠΡΠ»ΠΈ ΠΌΡ Π½Π° ΠΌΠ³Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ Π²ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ opendir() ΠΈ closedir() Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ Π΄Π»Ρ Π½Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΡ ΡΠΈΠΏΠ° _IO_READ ΠΈ _IO_LSEEK ΠΈ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡΡ .
Π‘ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠ‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ _IO_LSEEK ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ Π΅ΠΌΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ Β«ΠΏΠΎΠΈΡΠΊΠ°Β» (ΠΈΠ»ΠΈ Β«ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡΒ») Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΠ°ΠΉΠ»Π°. Π‘ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ° ΠΆΠ΅ ΠΈΡΡΠΎΡΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡΡΡ ΠΊ Β«ΠΏΠ΅ΡΠ²ΠΎΠΌΡΒ» ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° (ΠΊΠ°ΠΊ ΡΠ²Π½ΠΎ Π·Π°Π΄Π°Π² ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ seekdir(), ΡΠ°ΠΊ ΠΈ Π²ΡΠ·Π²Π°Π² ΡΡΠ½ΠΊΡΠΈΡ rewinddir()) ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡΡΡ ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ seekdir()), ΠΈΠ»ΠΈ ΠΆΠ΅ ΡΠ·Π½Π°ΡΡ ΡΠ²ΠΎΡ ΡΠ΅ΠΊΡΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° (Π²ΡΠ·Π²Π°Π² ΡΡΠ½ΠΊΡΠΈΡ telldir()).
ΠΠ΄Π½Π°ΠΊΠΎ, Β«Ρ ΠΈΡΡΠΎΡΡΡΒ» ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌΠΈ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Π΅ΡΠ΅ Π²Ρ ΡΠ°ΠΌΠΈ, ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠΈ ΡΠΎΠΆΠ΅ Π²ΡΠ΅ΡΠ΅Π»ΠΎ Π»Π΅ΠΆΠΈΡ Π½Π° Π²Π°Ρ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π·Π½Π°ΡΠ°ΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΡΠ°Π²Π½ΡΠΌΠΈ ΠΊΠ°ΠΊ Β«0Β», Β«2Β» ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, ΡΠ°ΠΊ ΠΈ Β«0Β», Β«64Β», Β«128Β» ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎ Π·Π΄Π΅ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ β ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ io_lseek() ΠΈ io_read() ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΡΡΠ°ΠΊΡΠΎΠ²Π°Π»ΠΈ ΡΡΠΈ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Ρ Π½ΠΎΠΌΠ΅ΡΠ°ΠΌΠΈ Β«0Β», Β«1Β», Β«2Β», ΠΈ Ρ.Π΄. (ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Β«0Β», Β«64Β», Β«128Β», ΠΈ Ρ.Π΄., Π΅ΡΠ»ΠΈ Π±Ρ ΡΡΠΈ ΡΠΈΡΠ»Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠΈΠΌ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡΠΌ Π½Π° Π½ΠΎΡΠΈΡΠ΅Π»Π΅. ΠΡΠ±ΠΎΡ Π·Π° Π²Π°ΠΌΠΈ!)
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ΠΡ Π²ΠΎΡ, ΠΎΡΡΠ°Π΅ΡΡΡ Β«ΠΏΡΠΎΡΡΠΎΒ» Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ struct dirent Β«ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌΒ» Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. Π‘ΡΡΡΠΊΡΡΡΠ° struct dirent Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ (Π²Π·ΡΡΠΎ ΠΈΠ· <dirent.h>):
struct dirent {
ino_t d_ino;
off_t d_offset;
uint16_t d_reclen;
uint16_t d_namelen;
char d_name[1];
};
ΠΠΎΡΠΎΡΠΊΠΎ ΠΎ Π΅Π΅ ΠΏΠΎΠ»ΡΡ :
d_ino Β«ΠΠ½Π΄Π΅ΠΊΡΠ½ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΒ» (Β«inodeΒ») β ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π΄Π»Ρ ΡΠΎΡΠΊΠΈ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½ΡΠ»Π΅Π²ΡΠΌ (Π½ΡΠ»Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π» Π±Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΠΎΠΌΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΌ/ΠΏΡΡΡΡΠΌ). d_offset Π‘ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° ΡΠΈΠΏΠ° Β«0Β», Β«1Β», Β«2Β», ΠΈ Ρ.Π΄. d_reclen Π Π°Π·ΠΌΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ struct dirent ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, Π²ΠΊΠ»ΡΡΠ°Ρ Π»ΡΠ±ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π² Π½Π΅Π΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΠΈ Π΄Π»Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ. d_namelen Π§ΠΈΡΠ»ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΠΏΠΎΠ»Π΅ d_name, Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ NULL. d_name ΠΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ β NULL.ΠΡΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅ ΡΡΡΡΠΊΡΡΡ ΡΠΈΠΏΠ° struct dirent ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΡΠ»ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΡ Π±Π°ΠΉΡ.