Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«QNX/UNIX: Анатомия ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 57

Автор ОлСг Π¦ΠΈΠ»ΡŽΡ€ΠΈΠΊ

Π“ΠΎΡ€Π°Π·Π΄ΠΎ Ρ…ΡƒΠΆΠ΅ Π΄Π΅Π»ΠΎ обстоит с pid ΠΈ chid, особСнно для процСсса, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π³ΠΎΡΡ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ сСтСвом ΡƒΠ·Π»Π΅. НС сущСствуСт Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ прямого способа ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PID ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ процСсса, Π° Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ°Π½Π°Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π» этот процСсс для ΠΎΠ±ΠΌΠ΅Π½Π° (ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π», Ссли ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ошиблись Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ PID). И Ρ‚ΠΎΠ³Π΄Π° Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ приходят Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ искусствСнныС ΠΏΡ€ΠΈΠ΅ΠΌΡ‹, построСнныС Π»ΠΈΠ±ΠΎ Π½Π° использовании Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… иСрархичСских (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ-Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ) ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ процСссов ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра, Π»ΠΈΠ±ΠΎ Π½Π° систСмах ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ условных договорСнностСй (ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΡ‚ случая ΠΊ ΡΠ»ΡƒΡ‡Π°ΡŽ).

Π . ΠšΠ΅Ρ€Ρ‚Π΅Π½ [1] ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сущСствуСт мноТСство способов нахоТдСния этой адрСсной Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹, ΠΈ пСрСчисляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

1. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с извСстным ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΌ ND/PID/CHID…

2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для объявлСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ND/PID/CHID Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ программы…

3. Π—Π°Π½ΡΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ пространства ΠΈΠΌΠ΅Π½ ΠΏΡƒΡ‚Π΅ΠΉ ΠΈ ΡΡ‚Π°Ρ‚ΡŒ администратором рСсурсов.

НС вдаваясь Π² ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· (Π²Ρ‹ это ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сами), ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ 1-ΠΉ способ β€” ΠΊΡ€Π°ΠΉΠ½Π΅ искусствСнный ΠΈ Π½Π΅Π³ΠΈΠ±ΠΊΠΈΠΉ (особСнно Π² сСтСвой срСдС), 2-ΠΉ β€” ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ лишь ΠΊ ΡƒΠ·ΠΊΠΎΠΌΡƒ ΠΊΡ€ΡƒΠ³Ρƒ Π·Π°Π΄Π°Ρ‡, Π° 3-ΠΉ способ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΡ‚ нас ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ совсСм Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Сю ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ адрСсации.

НСсколько, бСзусловно, интСрСсных ΠΈ Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… внимания Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΉ Π½Π° Ρ‚Π΅ΠΌΡƒ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π’. Π—Π°ΠΉΡ†Π΅Π² Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт Π·Π° Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²ΠΎΠΉ.

ΠŸΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ случаСм, внСсСм ΠΈ ΠΌΡ‹ свою Π»Π΅ΠΏΡ‚Ρƒ Π² Β«ΠΊΠΎΠΏΠΈΠ»ΠΊΡƒΒ» способов вычислСния адрСсной Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹ ΠΈ увязывания ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ сСрвСром. Π’ Ρ‚Π΅Ρ… нСчастых случаях, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½Π° (ΠΎΠ± этом см. Π΄Π°Π»Π΅Π΅), Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π° Π±Π°Π·Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ прямого ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями, ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΎΡ„ΠΎΡ€ΠΌΠ»ΡΡ‚ΡŒ сСрвСрный процСсс ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΊΠ°ΠΊ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ рСсурса, ΠΈ ΠΊΠ°ΠΊ ΠΊΠ°Π½Π°Π» прямого ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями. ΠŸΡ€ΠΈ этом ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ адрСсациСй ΠΏΡƒΡ‚ΠΈ ΠΊ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΠΎ read() ΠΈΠ»ΠΈ devctl(), Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ свой PID ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ для прямого ΠΎΠ±ΠΌΠ΅Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ CHID. На этом Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ, Π° вСсь ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ сообщСний Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π». ΠŸΠΎΠ»Π½Ρ‹ΠΉ тСкст Ρ‚Π°ΠΊΠΎΠ³ΠΎ сСрвСра Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠ·ΠΆΠ΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ обратимся ΠΊ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° рСсурсов. Π’ этой Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ рСгистрируСт Π² пространствС ΠΈΠΌΠ΅Π½ (Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС) ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ имя, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹, заинтСрСсованныС Π² Π΅Π³ΠΎ рСсурсС, Π±ΡƒΠ΄ΡƒΡ‚ Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ. ИдСя Π½Π΅ Π½ΠΎΠ²Π° для ΠΌΠΈΡ€Π° UNIX (ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы /proc ΠΈΠ»ΠΈ /dev, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ содСрТат Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²), ΠΈ ΠΎΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ всС Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π² Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΡ‚ UNIX, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Plan9 ΠΈΠ»ΠΈ Inferno.

Π’Π΅Ρ…Π½ΠΈΠΊΠ° ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° рСсурса Π²Π²ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рСализуСтся Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ процСссов procnto (ΠΊΠ°ΠΊ это происходит, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… описываСтся Π² [1]). ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΡΡ‰Π΅Π΅ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ POSIX-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

int fd = open("/net/host/dev/srv", O_RDONLY);

ΠΏΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡŽ Π² точности соотвСтствуСт Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ происходит Π² процСссС ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ:

int coid = ConnectAttach(node, pid, chid, 0, 0);

ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ… Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠΆ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹, хотя ΠΌΡ‹ ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΠ΅ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС Β«Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ дСскриптор», Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ - Β«ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ соСдинСния». Π—Π΄Π΅ΡΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚Π»ΠΈΠ²ΠΎ Π²ΠΈΠ΄Π½Π° ΠΏΠΎΠ΄ΠΌΠ΅Π½Π° адрСсной Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹ node, pid ΠΈ chid ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΡƒΡ‚ΠΈ /net/host/dev/srv.

МодСль адрСсации ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° рСсурса Π² QNX, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°, Π³ΠΈΠ±ΠΊΠ° ΠΈ мобильна, Π½Π΅ΠΆΠ΅Π»ΠΈ модСль прямого ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ запускС воспринимал Π±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² пространствС ΠΈΠΌΠ΅Π½, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (ΠΏΡƒΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΈ ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ Π² своСй осмыслСнности):

# server -n /dev/srv

# server -n /proc/srv

# server -n /fs/srv

МоТно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ нСсколько экзСмпляров Ρ‚Π°ΠΊΠΎΠ³ΠΎ сСрвСра, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… использованиСм Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ запуска:

# server -n /dev/srv1

# server -n /dev/srv2

НаконСц, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° своСм локальном ΡƒΠ·Π»Π΅ сСти, Π½ΠΎ ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… сСтСвых ΡƒΠ·Π»Π°Ρ…:

# on -f host1 server -n /dev/srv1

# on -f host1 server -n /dev/srv2

# on -f host2 server -n /dev/srv1

# on -f host2 server -n /dev/srv1

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли наш ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΡ€ΠΈ запускС ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя сСрвСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с самыми Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ экзСмплярами сСрвСров, Π³Π΄Π΅ Π±Ρ‹ ΠΎΠ½ΠΈ Π½ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π² сСти, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

# client -s /dev/srv1

# client -s /net/host2/dev/srv1

ΠŸΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ этого Ρ€Π°Π·Π΄Π΅Π»Π°.

Π’ Ρ‡Π΅ΠΌ Π΅Ρ‰Π΅ состоит Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ отнСсти ΠΊ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ гибкости ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ²?

Π’ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΉ схСмС, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°, Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ:

MsgSend(coid, &bufou, sizeof(bufou), &bufin, sizeof(bufin));

ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ послано сообщСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ (Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ) Π΄Π»ΠΈΠ½Ρ‹ (sizeof(bufou)). Π­Ρ‚ΠΎ сообщСниС (с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Π΅Π³ΠΎ фактичСской Π΄Π»ΠΈΠ½Π΅) Π±ΡƒΠ΄Π΅Ρ‚ принято сСрвСром, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ сообщСниСм ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ доставлСно ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ MsgSend().

ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ с ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ рСсурсов, Π² силу нСобходимости привСдСния клиСнтских запросов Π² «прокрустово Π»ΠΎΠΆΠ΅Β» POSIX, ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ другая: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ запрос ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, которая ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° стандартом.

1. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π³Ρ€ΡƒΠΏΠΏΡ‹ read() ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ сСрвСра Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π»ΠΈΠ½Π° Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…), Π½ΠΎ Π½Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Π’ ΠΎΡ‚Π²Π΅Ρ‚ сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. ОбмСн Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ, Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΎΡ‚ сСрвСра ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ.

2. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π³Ρ€ΡƒΠΏΠΏΡ‹ write() ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ сСрвСру Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, Π½ΠΎ Π² ΠΎΡ‚Π²Π΅Ρ‚ сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° - число Π±Π°ΠΉΡ‚, фактичСски ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. ОбмСн Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ, Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΊ сСрвСру.

3. ΠšΠΎΠΌΠ°Π½Π΄Π° devctl(), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°ΡΡΡ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°Π½Π°Π»Π° управлСния (Π½ΠΎ это Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ), Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π»ΠΈΠ±ΠΎ ΠΊ сСрвСру (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ write()), Π»ΠΈΠ±ΠΎ ΠΎΡ‚ сСрвСра (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ read()), Π»ΠΈΠ±ΠΎ Π² ΠΎΠ±ΠΎΠΈΡ… направлСниях Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΠΌΠ΅Π½. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, этой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΠΌΠ΅Π½. Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, принято ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ devctl() ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ фиксированной Π΄Π»ΠΈΠ½Ρ‹: Π΄Π»ΠΈΠ½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… опрСдСляСтся нСпосрСдствСнно ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Но это Π½Π΅ являСтся ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ: ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ динамичСски Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ исходя ΠΈΠ· объСма Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ (ΠΊΠ°ΠΊ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°). Π’Π°ΠΊΠΎΠΉ Ρ‚Ρ€ΡŽΠΊ позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ здСсь состоит Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ: ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠΎ devctl() Π² ΠΎΠ±ΠΎΠΈΡ… направлСниях, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π½Ρ‹! А это, ΡΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ, Π½Π΅ совсСм Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΈ простом ΠΎΠ±ΠΌΠ΅Π½Π΅ сообщСниями.

4. ΠΠ°ΠΊΠΎΠ½Π΅Ρ†, послСдним Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° с ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ рСсурса являСтся ΠΎΠ±ΠΌΠ΅Π½ «сырыми», Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ сообщСниями. Но это ΡƒΠΆΠ΅ вариация простого ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями, Π° ΠΊΠ°ΠΊ Π΅Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅, ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π’. Π—Π°ΠΉΡ†Π΅Π²Π°.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, такая ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ простого ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ошибок, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ POSIX ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ нСсСт Π² сСбС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ коррСктности.

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Если Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² рСсурсов β€” это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ надстройка Π½Π°Π΄ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ СстСствСнный вопрос: ΠΊΠ°ΠΊΠΎΠ²Π° ΠΆΠ΅ ΠΏΠ»Π°Ρ‚Π° Π·Π° использованиС этого ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ Β«ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎΠ³ΠΎΒ» ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°?

Для Π°Π½Π°Π»ΠΈΠ·Π° «скоростных» характСристик Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями создадим Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (клиСнтскиС ΠΈ сСрвСр, Ρ„Π°ΠΉΠ»Ρ‹ cli.cc, clr.cc ΠΈ srv.cc), Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ Π²Ρ‹ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ опрСдСлСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ прилоТСниями, вынСсСм ΠΈΡ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ (Ρ„Π°ΠΉΠ» common.h).

ΠžΠ±Ρ‰ΠΈΠ΅ опрСдСлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

const char VERSION[] = "vers. 1.03";


// имя, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² пространствС