ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΈ ΡΠ΄ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ. ΠΡΠ»ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅, ΡΡΡ ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ°Π±ΠΎΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅Ρ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. ΠΡΡΡΡ Π²Π°Ρ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ ΠΏΡΠΈ ΡΡΠΎΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠΈ β ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ QNX/Neutrino Π²ΡΠ΅ ΡΡΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ.
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ°
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΡΠ±ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ°; Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π½Π°Π»Π°Π³Π°Π΅ΠΌΡΠ΅ Π·Π΄Π΅ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π²ΡΡΠ΅ΠΊΠ°ΡΡ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² Π·Π°ΡΠΈΡΡ (ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Ρ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΈ Ρ.Π΄.). ΠΠΎ Π²ΡΠ΅ΠΉ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠΈ, Π²Π°ΠΌ ΡΠΆΠ΅ Π΄ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ β Π»ΠΈΠ±ΠΎ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ, Π»ΠΈΠ±ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, ΠΈΠ»ΠΈ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ.
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π²Π΅ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ:
$ program1
ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ program1 ΠΈ ΠΆΠ΄Π°ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π΅Π΅ ΡΠ°Π±ΠΎΡΡ. ΠΠ»ΠΈ, Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π½Π°Π±ΡΠ°ΡΡ:
$ program2 &
ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ program2 Π±Π΅Π· ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π΅Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π³ΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° program2 ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΆΠ΅Π»Π°Π΅ΡΠ΅ ΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎ Π΅Π΅ Π·Π°ΠΏΡΡΠΊΠ°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ nice β ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² UNIX:
$ nice program3
ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ program3 Ρ Π·Π°Π½ΠΈΠΆΠ΅Π½Π½ΡΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ.
ΠΠ»ΠΈ Π½Π΅Ρ?
ΠΡΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠΎ ΠΌΡ Π²Π΅Π»Π΅Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ nice, Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ. ΠΠΎΠΌΠ°Π½Π΄Π° nice Π·Π°ΡΠ΅ΠΌ Π·Π°Π½ΠΈΠ·ΠΈΠ»Π° ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ (ΠΎΡΡΡΠ΄Π° ΠΈ ΠΈΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Β«niceΒ» β Β«Π±Π»Π°Π³ΠΎΠ²ΠΎΡΠΏΠΈΡΠ°Π½Π½Π°ΡΒ») ΠΈ Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΠ»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ program3 Ρ ΡΡΠΈΠΌ Π·Π°Π½ΠΈΠΆΠ΅Π½Π½ΡΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ.
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡΠΠ°Ρ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ Π·Π°Π±ΠΎΡΠΈΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΡ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ Π·Π°Π΄Π°ΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡΡΡ Π½Π° ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° (ΠΏΠ°ΠΊΠ΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΡΠ°ΠΉΠ»), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΡ ΡΠ°Π±ΠΎΡΡ Π·Π° Π²Π°Ρ, Π½ΠΎ Π² ΡΡΠ΄Π΅ Π΄ΡΡΠ³ΠΈΡ ΡΠ»ΡΡΠ°Π΅Π² Π²Ρ ΠΏΠΎΠΆΠ΅Π»Π°Π΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΆΠ΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ΄Π½Π° Π³Π»Π°Π²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π° Π·Π°ΠΏΡΡΠΊ Π²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡΡΠ³ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΏΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠΎΠ±ΡΡΠΈΡ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ QNX/Neutrino ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΄ΡΡΠ³ΠΈΠΌ):
β’ system();
β’ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ exec();
β’ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ spawn();
β’ fork();
β’ vfork().
ΠΠ°ΠΊΡΡ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π΄Π²ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ: ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ Π΄Π²ΡΠΌΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡ.
ΠΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈ Π²ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ°Ρ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅. ΠΠΎΡΠΎΠΊ Π² ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΠ΄Π½Ρ ΠΈΠ· Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅, ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΡΡΠ°Π²ΠΈΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΠΎΠ·Π΄Π°ΡΡ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ°ΡΠ΅ΠΌ ΡΠ΄ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π·Π°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ° Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅. ΠΡΠΎΡ ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ main(). (ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π² ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ fork() ΠΈΠ»ΠΈ vfork() Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π°ΡΠ½Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΈΠ· fork() ΠΈΠ»ΠΈ vfork(), ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ β ΠΊΠ°ΠΊ ΠΈΠΌΠ΅ΡΡ Ρ ΡΡΠΈΠΌ Π΄Π΅Π»ΠΎ, ΠΌΡ Π²ΠΊΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½ΠΈΠΆΠ΅).
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ system()Π€ΡΠ½ΠΊΡΠΈΡ system() β ΡΠ°ΠΌΠ°Ρ ΠΏΡΠΎΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ; ΠΎΠ½Π° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄ ΠΎΠ΄Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ, ΡΠ°ΠΊΡΡ ΠΆΠ΅, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Π½Π°Π±ΡΠ°Π»ΠΈ Π±Ρ Π² ΠΎΡΠ²Π΅Ρ Π½Π° ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°, ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΅Π΅.
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΆΠ΅Π»Π°Π΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ, ΡΡΠ½ΠΊΡΠΈΡ system() Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠΎΠΏΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°.
Π Π΅Π΄Π°ΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ² system(). ΠΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π²ΡΠΉΡΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° Π²Π΅ΡΠ½ΡΡΡΡΡ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡ. ΠΡΠ΅ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΠ² ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΊΡΡΡΠΎΡΠ° Π² ΡΠ΅ΠΊΡΡΠ΅. Π ΡΡΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ Ρ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΌΠΎΠ³Ρ Π΄Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«:!pwdΒ» Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. Π Π΅Π΄Π°ΠΊΡΠΎΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
system("pwd");
ΠΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ system() Π΄Π»Ρ Π²ΡΠ΅Ρ Π΄Π΅Π» Π² ΠΠΎΠ΄Π½Π΅Π±Π΅ΡΠ½ΠΎΠΉ? ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, Π½Π΅Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π·Π°Π΄Π°Ρ, ΡΡΠ΅Π±ΡΡΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ exec() ΠΈ spawn()ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ΄ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΊ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π°ΠΌ exec() ΠΈ spawn(). ΠΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ ΠΌΡ ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΊ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΡΠΌ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ Π΄Π²ΡΠΌΡ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ.
Π‘Π΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ exec() ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π΄ΡΡΠ³ΠΈΠΌ. Π― ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Ρ ΠΏΠΎΠ΄ ΡΡΠΈΠΌ ΡΠΎ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ΅ΡΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° exec(), ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΡΡΠ³ΡΡ. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° (PID) ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² Π΄ΡΡΠ³ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅? ΠΡ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ fork().
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ spawn() ΡΠ°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ. ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° spawn() ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ (Ρ Π½ΠΎΠ²ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ.
Spawn POSIX Exec POSIX spawn() ΠΠ° spawnl() ΠΠ΅Ρ execl() ΠΠ° spawnle() ΠΠ΅Ρ execle() ΠΠ° spawnlp() ΠΠ΅Ρ execlp() ΠΠ° spawnlpe() ΠΠ΅Ρ execlpe() ΠΠ΅Ρ spawnp() ΠΠ° spawnv() ΠΠ΅Ρ execv() ΠΠ° spawnve() ΠΠ΅Ρ execve() ΠΠ° spawnvp() ΠΠ΅Ρ execvp() ΠΠ° spawnvpe() ΠΠ΅Ρ execvpe() ΠΠ΅ΡΠ Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ exec() ΠΈ spawn(). Π ΡΠ°Π±Π»ΠΈΡΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ POSIX, Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ β Π½Π΅Ρ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΄Π»Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ POSIX-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠΈ ΡΠΎΠΌ, ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΌΠ°Π»ΠΎΠΏΠΎΠ½ΡΡΠ½ΡΠΌΠΈ, Π² ΠΈΡ ΡΡΡΡΠΈΠΊΡΠ°Ρ Π΅ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΠ°.
Π‘ΡΡΡΠΈΠΊΡ: Π‘ΠΌΡΡΠ»: l (Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ Β«LΒ») Π‘ΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π·Π°Π΄Π°Π½Π½ΡΠΉ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΠ°ΠΌΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅ΠΌΡΠΉ Π½ΡΠ»Π΅Π²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ NULL. Π΅ Π£ΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅. p ΠΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ ΠΏΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΄Π»Ρ Π΅Π΅ ΠΏΠΎΠΈΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ PATH. v Π‘ΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π²Π΅ΠΊΡΠΎΡ (ΠΌΠ°ΡΡΠΈΠ²) Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².Π‘ΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π·Π΄Π΅ΡΡ β ΡΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.