β’Β ΠΡΠΎΡΠ΅ΡΡΡ 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β’Β
CHIDΠ ΡΡΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠΆΠ°Π»ΡΠΉ, ΠΈ ΠΊΡΠΎΠ΅ΡΡΡ ΡΠ°ΠΌΠ°Ρ Π³Π»Π°Π²Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° Π½Π΅Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ·Π»Π°
ndnetmgr_strtond()ΠΠΎΡΠ°Π·Π΄ΠΎ Ρ ΡΠΆΠ΅ Π΄Π΅Π»ΠΎ ΠΎΠ±ΡΡΠΎΠΈΡ Ρ
pidchidΠ . ΠΠ΅ΡΡΠ΅Π½ [1] ΠΎΡΠΌΠ΅ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠΈΠ°Π΄Ρ, ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ :
1.Β ΠΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ» Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π² Π½Π΅ΠΌ ND/PID/CHIDβ¦
2.Β ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ND/PID/CHID Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡβ¦
3.Β ΠΠ°Π½ΡΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΏΡΡΠ΅ΠΉ ΠΈ ΡΡΠ°ΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠΌ ΡΠ΅ΡΡΡΡΠΎΠ².
ΠΠ΅ Π²Π΄Π°Π²Π°ΡΡΡ Π² ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· (Π²Ρ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΌΠΈ), ΠΎΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ 1-ΠΉ ΡΠΏΠΎΡΠΎΠ± β ΠΊΡΠ°ΠΉΠ½Π΅ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈ Π½Π΅Π³ΠΈΠ±ΠΊΠΈΠΉ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΡΠ΅Π΄Π΅), 2-ΠΉ β ΠΊΡΠ°ΠΉΠ½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ Π»ΠΈΡΡ ΠΊ ΡΠ·ΠΊΠΎΠΌΡ ΠΊΡΡΠ³Ρ Π·Π°Π΄Π°Ρ, Π° 3-ΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΡ Π½Π°Ρ ΠΊ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΎΠΉ, Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ Π΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌΠΈ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΠΈ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π²Π°ΡΠΈΠ°ΡΠΈΠΉ Π½Π° ΡΠ΅ΠΌΡ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π. ΠΠ°ΠΉΡΠ΅Π² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²ΠΎΠΉ.
ΠΠΎΠ»ΡΠ·ΡΡΡΡ ΡΠ»ΡΡΠ°Π΅ΠΌ, Π²Π½Π΅ΡΠ΅ΠΌ ΠΈ ΠΌΡ ΡΠ²ΠΎΡ Π»Π΅ΠΏΡΡ Π² Β«ΠΊΠΎΠΏΠΈΠ»ΠΊΡΒ» ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠΈΠ°Π΄Ρ ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. Π ΡΠ΅Ρ Π½Π΅ΡΠ°ΡΡΡΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΡ ΠΏΠΎΡΠΎΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½Π° (ΠΎΠ± ΡΡΠΎΠΌ ΡΠΌ. Π΄Π°Π»Π΅Π΅), Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΠΊΠ°Π½Π°Π» ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π° Π±Π°Π·Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΌΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΎΡΠΎΡΠΌΠ»ΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΊΠ°ΠΊ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΡΠ΅ΡΡΡΡΠ°, ΠΈ ΠΊΠ°ΠΊ ΠΊΠ°Π½Π°Π» ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΡΡΠΈ ΠΊ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΠΎ
read()devctl()