return EOK;
}
ΠΠ°ΠΏΡΡΡΠΈΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΅Π³ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅:
/dev # ls -l /dev/w*
nrw-rw-rw- 1 root root 0 Nov 09 23:17 /dev/wmng
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ:
void main(int argc, char *argv[]) {
char sResName[_POSIX_PATH_MAX + 1] = "/dev/wmng";
if (argc > 1) strcpy(sResName, argv[1]);
int df = open(sResName, O_RDWR | O_NONBLOCK);
if (df < 0)
perror("device open"), exit(EXIT_FAILURE);
cout << open << sResName
<< " , desc. = " << df << endl;
char ibuf[2048], obuf[2048];
int r, w;
while (true) {
if ((r = read(df, obuf, sizeof(obuf))) < 0) break;
cout << '#' << obuf << endl; cout << '>' << flush;
cin >> ibuf;
if (( w = write(df, ibuf, strlen(ibuf) + 1)) <= 0) break;
}
if (r < 0) perror("read error");
if (w <= 0) perror("write error");
exit(EXIT_FAILURE);
}
ΠΠ°ΠΏΡΡΡΠΈΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ 2 ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (ΠΈΡ , ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠΎΠ»Ρ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ) ΠΈ ΡΠ±Π΅Π΄ΠΈΠΌΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΡΠ΅ΡΡΡΡΠ°:
# wmclient
open /dev/wmng , desc. = 3 #
>1234
#1234
>54321
#54321
>
# wmclient
open /dev/wmng , desc. = 3
#
>qwerty
#qwerty
>asdf
#asdf >
ΠΡΡΠ΅ΡΠ»ΠΈΠ²ΠΎ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° (ΡΠ΅Π°Π»ΡΠ½ΠΎ ΡΡΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ) ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈ ΡΠ²ΠΎΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠ»Π½ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ read() Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π·Π°Π½ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ read() ΠΎΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°) ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΏΡΠ΅Π²Π΄ΠΎΡΡΡΡΠΎΠΉΡΡΠ²Ρ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²Π½Π΅ΡΡΠΈ ΠΎΡΡΡΠΈΠΌΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, sleep() ΠΈΠ»ΠΈ delay()) ΠΈ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠ»ΠΎΡΠ½ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². Π’Π°ΠΊΠΈΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΌ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°ΠΌ, ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β iofunc_lock_ocb_default().
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ?
ΠΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ (Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ!) Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ, ΠΊΡΠΎ ΠΏΡΠΈΡΡΡΠΏΠ°Π΅Ρ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ. Π’Π°ΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ²ΡΡΠ½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ, ΠΏΡΠΈΡ ΠΎΠ΄ΡΡΠΈΠΌ ΠΈΠ· ΠΌΠΈΡΠ° Windows. ΠΠ»Ρ UNIX ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΡΠ°ΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΡΠΆΠ΅ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΎΡΠ³Π°Π½ΠΈΡΠ½Π΅Π΅, Π½ΠΎ ΠΈ ΡΠ°ΠΌ ΡΡΠΎ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·Π° Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ fork(). QNX ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ΄ΡΠΈ Π΅ΡΠ΅ Π΄Π°Π»ΡΡΠ΅ Π² ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ (ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ ) ΠΊΠ°ΠΊ Π³ΡΡΠΏΠΏΠ° ΡΠ°Π·Π½ΠΎΡΠΎΠ΄Π½ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²:
β’ Π£ΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π½Π°ΠΌΠΈ ΡΠ°Π½Π΅Π΅ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ² (ΠΏΡΡΡΡ Π΄Π°ΠΆΠ΅ ΠΎΠ½ΠΈ ΠΈ ΡΠ΄Π΅Π»Π°Π½Ρ Π±Π΅Π³Π»ΠΎ, ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ΅Π½ΠΎΡΠ½ΡΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²) ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ, ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ Π³ΡΡΠΏΠΏΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π³ΡΡΠΏΠΏΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΅ΡΠ»ΠΈ ΠΈ Π½Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ, ΡΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ Π±Π»ΠΈΠ·ΠΊΠΈ. ΠΡΠΎΡ ΡΠ°ΠΊΡΠΎΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΌ, ΠΈ ΠΏΡΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠ²Π°ΡΡΡΡ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎΡΡΡΡ ΠΈ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎΠΌ.
β’ ΠΡΠΎΡΠ΅ΡΡΡ QNX ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π²ΡΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΡΠ°ΠΊΠΎΠ²ΡΡ ΠΈ Π² UNIX Π²ΠΎΠΎΠ±ΡΠ΅: ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΡΡΠ½ΠΎΡΡΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠΆΠ΅Π»ΠΎΠ²Π΅ΡΠ½ΡΠ΅ (ΡΠ°ΡΡΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅) ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ IPC. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π² ΡΡΠΎΠΌ ΠΈ ΡΠ΅Π½Π½ΠΎΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Ρ ΠΈΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π°Π΄ΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΠΌΠΈ β ΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΆΠΈΠ²ΡΡΠ΅ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎ QNX, Π½Π΅ ΡΡΠΆΠ°Ρ ΡΠΏΠ΅ΠΊΡΡ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΡΡ IPC-ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΏΡΠΈΠ²Π½ΠΎΡΠΈΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½ΠΎΠ²ΡΠΉ Β«ΡΠ»ΠΎΠΉΒ» ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ β ΠΎΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΄ΡΠ°. ΠΡΠΈ ΡΡΠΎΠΌ Β«ΠΏΡΠΎΠ½ΠΈΡΠ°Π΅ΠΌΠΎΡΡΡΒ» ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠ»Π΅ΡΠΎΠΊ ΠΆΠΈΠ²ΠΎΠ³ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΌΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ΅, Π½ΠΈΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ ΡΠ½ΠΈΠΆΠ°Ρ ΠΈΡ Β«Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΡΡΠΈΒ».
ΠΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄Π²Π΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Β«ΡΠ»ΠΎΡΒ» Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅: Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ (Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ°, ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ Π΅ΡΠ΅ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ QNX 4.X) ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΡΠ΅ΡΡΡΡΠ°. ΠΠ΅Π»Π°ΡΡ Π²ΡΠ±ΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ°Π½Π½Π΅Π³ΠΎ ΡΡΠΊΠΈΠ·Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π½Π° Π΄ΡΡΠ³ΠΎΠΉ Π² Ρ ΠΎΠ΄Π΅ ΡΠ°Π·Π²ΠΈΡΠΈΡ β Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ° ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΠΎΡΠ½ΠΎΠ² ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠΎΡΡΠΎΠΌΡ, ΠΏΡΠΈΡΡΡΠΏΠ°Ρ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π°ΠΏΡΠΈΠΎΡΠ½ΠΎ, Π΄ΠΎ Π½Π°ΡΠ°Π»Π° ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΎΡΡΠ΅ΡΠ»ΠΈΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ, ΡΡΠΎ Π²ΡΠΈΠ³ΡΡΠ²Π°Π΅ΠΌ ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°Π΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠ²Π΅ ΡΡΠΎΡΠΎΠ½Ρ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°
ΠΡΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π΄Π»Ρ QNX (ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΌΠΈΠΊΡΠΎΡΠ΄Π΅ΡΠ½ΡΡ ΠΠ‘) ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ² Π½Π΅ ΠΏΠΎΠΊΠΈΠ΄Π°Π΅Ρ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡ ΠΎΠΆΠ΅ΡΡΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠΈΡ Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². Π ΡΡΠΎΠΌ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ² β ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Π²Π½Π΅ΡΠ½ΠΈΡ Β«ΠΎΠ±Π΅ΡΡΠΎΠΊΒ» Π½Π°Π΄ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠ»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ: ΠΏΡΠΎΡΡΠΎΡΠ°, Π³ΠΈΠ±ΠΊΠΎΡΡΡ, ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ, ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ. ΠΡΠΈΠΌ ΠΌΡ ΠΈ Π·Π°ΠΉΠΌΠ΅ΠΌΡΡ Π² ΠΎΡΡΠ°Π²ΡΠ΅ΠΉΡΡ ΡΠ°ΡΡΠΈ Π³Π»Π°Π²Ρ.
ΠΡΠΎΡΡΠΎΡΠ° ΠΈ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡΡ
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΊΡΠ°ΠΉΠ½Π΅ ΠΏΡΠΎΡΡΠΎ Π²ΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. ΠΠΎΠ³Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠ° ΠΏΠΎΠ»Π½Π°Ρ ΡΡΠ½ΠΎΡΡΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ Π°Π΄ΡΠ΅ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΎΠ±ΠΌΠ΅Π½Π°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π²ΡΠ΅ ΡΡΠΎ Β«ΠΊΡΡΡΠΈΡΡΡΡΒ».
Π‘ΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
int chid = ChannelCreate(0);
...
while (true) {
struct _msg_info info;
int rcvid = MsgReceive(chid, &bufin, sizeof(bufin), &info);
if (rcvid < 0) exit(EXIT_FAILURE);
if (MsgReply(rcvid, EOK, &bufou, sizeof(bufou) < 0) exit(EXIT_FAILURE);
}
Co ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°:
int coid = ConnectAttach(node, pid, chid, _NTO_SIDE_CHANNEL, 0);
if (coid < 0) exit(EXIT_FAILURE);
...
while(...)
if (MsgSend(coid, &bufou, sizeof(bufou), &bufin, sizeof(bufin)) == -1)
exit(EXIT_FAILURE);
}
ΠΠΎΠ΄ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π°, Π½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΡΠ΅ΡΡΡΡΠ°, Π±ΡΠ΄Π΅Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΎΠ±ΡΠ΅ΠΌΠ½Π΅Π΅ (ΠΎΠ±ΡΠ°Π·ΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΠΌΡ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΠ°Π½Π΅Π΅ ΠΏΠΎ ΡΠ΅ΠΊΡΡΡ). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΠ»Π° ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΌΠ°Π»ΠΎΠ²ΡΠ°Π·ΡΠΌΠΈΡΠ΅Π»Π΅Π½.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π²Π΅ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΡΠ΅ΡΡΡΡΠ° β ΡΡΠΎ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ±ΡΠ΅Π³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π° Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ². ΠΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π½Π°Π²ΡΠΊΠ°Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΌΡΡ Π·Π°ΠΌΡΡΠ»ΠΎΠ²Π°ΡΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ² ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΡΡΠΈΠ½Π½ΡΠΌ Π·Π°Π½ΡΡΠΈΠ΅ΠΌ, Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΠΈΠΌ ΠΏΠΎ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΏΠΎΡΡΠ΅ΠΌ Π·Π΄Π΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ QNX ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ³ΠΎ (Π±ΠΎΠ»Π΅Π΅ 80 ΡΡΡΠ°Π½ΠΈΡ) ΡΠ°Π·Π΄Π΅Π»Π°, ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠ΅Ρ Π½ΠΈΠΊΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ²; ΠΏΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Ρ ΠΈ ΡΠΊΡΡΠΏΡΠ»Π΅Π·Π½ΠΎΡΡΠΈ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π»ΡΡΡΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ Π²ΡΠ΅ΠΉ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΡΡΡ
ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ΅Ρ Π½ΠΈΠΊΠ° ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π΄ΡΠ΅ΡΠ°ΡΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ (ΡΠ΅ΡΠ²Π΅ΡΠ°) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Β«ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΡΡ ΡΡΠΎΠΉΠΊΡΒ» (ΡΡΠΈΠΏΠ»Π΅Ρ [1]) ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ND, PID ΠΈ CHID, Π³Π΄Π΅:
β’ ND β Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ·Π»Π°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ°Ρ Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°-ΡΠ΅ΡΠ²Π΅Ρ (ΡΠ·Π΅Π», Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π΄ΠΎ ΠΎΡΡΡΠ»Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅);
β’ PID β PID ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΡΠ·Π»Π΅ (ΠΊΠΎΠΌΡ ΠΎΡΡΡΠ»Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅);
β’ CHID β Π½ΠΎΠΌΠ΅Ρ ΠΊΠ°Π½Π°Π»Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΊΡΡΠ»Π° ΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π»Ρ ΠΏΡΠΈΠ΅ΠΌΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°.
Π ΡΡΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠΆΠ°Π»ΡΠΉ, ΠΈ ΠΊΡΠΎΠ΅ΡΡΡ ΡΠ°ΠΌΠ°Ρ Π³Π»Π°Π²Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° Π½Π΅Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ·Π»Π° nd, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΏΠΎΡΠΎΠ±Π½ΠΎ ΡΠ°ΠΌΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΠ΅ΡΠΈ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ΅Π³ΠΎ Π½Π°Ρ Ρ ΠΎΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ netmgr_strtond(). (ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΠ΅, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΡΠ·Π»Π° Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΠΈΠΌΡ, Π° Π½Π΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ.)