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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «БистСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² срСдС WindowsΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 48

Автор ДТонсон Π₯Π°Ρ€Ρ‚

МодСли процСсса Π² UNIX ΠΈ Windows Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π² Windows отсутствуСт эквивалСнт UNIX-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fork, ΡΠΎΠ·Π΄Π°ΡŽΡ‰Π΅ΠΉ копию Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ процСсса, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΅Π³ΠΎ пространство Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΡƒΡ‡Ρƒ ΠΈ стСк. Π’ Windows Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΡ‡Π½ΠΎΠΉ эмуляции fork, Π½ΠΎ ΠΊΠ°ΠΊ Π½ΠΈ Ρ€Π°ΡΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ послСдствия этого ограничСния, остаСтся Ρ„Π°ΠΊΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fork ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… систСмах UNIX, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π»ΡŽΠ±Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ создания Ρ‚ΠΎΡ‡Π½ΠΎΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ систСмы с копиями всСх ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² синхронизации, особСнно Π² случаС SMP-систСм, приводят ΠΊ возникновСнию мноТСства трудностСй. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ функция fork Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… систСм.

Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, функция CreateProcess Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ для UNIX Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ fork ΠΈ execl (ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· пяти ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ exec). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Windows ΠΏΡƒΡ‚ΠΈ доступа Π² UNIX ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ срСды PATH.

Как Ρ€Π°Π½Π΅Π΅ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ "ΠΏΡ€Π΅Π΄ΠΎΠΊ-ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ" ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами Π² Windows Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ. Π’Π°ΠΊ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ процСсса Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ Π΄Π°ΠΆΠ΅ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ процСсс. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Windows ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π³Ρ€ΡƒΠΏΠΏΡ‹ процСссов. БущСствуСт, ΠΎΠ΄Π½Π°ΠΊΠΎ, ограничСнная Ρ„ΠΎΡ€ΠΌΠ° Π³Ρ€ΡƒΠΏΠΏΡ‹ процСссов, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всС процСссы ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ события консоли.

ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ Windows ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ дСскрипторами, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ процСссов, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² UNIX дСскрипторы процСссов ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚.

Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ исполняСмого модуля ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки

Для указания ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° исполняСмого модуля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lpApplicationName, Ρ‚Π°ΠΊ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lpCommandLine. ΠŸΡ€ΠΈ этом Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

β€’ Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ lpApplicationName, Ссли Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Ρ€Π°Π²Π½ΠΎ NULL, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ имя Ρ„Π°ΠΉΠ»Π° исполняСмого модуля. Если имя модуля содСрТит ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, Π΅Π³ΠΎ слСдуСт Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Π‘ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС приводится Π½ΠΈΠΆΠ΅.

β€’ Π•сли ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля lpApplicationName Ρ€Π°Π²Π½ΠΎ NULL, Ρ‚ΠΎ имя модуля опрСдСляСтся ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΠ· лСксСм, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ lpCommandLine.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ задаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lpCommandLine, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lpApplicationName полагаСтся Ρ€Π°Π²Π½Ρ‹ΠΌ NULL. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ порядок использования этих Π΄Π²ΡƒΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

β€’ ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lpApplicationName, Ссли ΠΎΠ½ Π½Π΅ Ρ€Π°Π²Π΅Π½ NULL, опрСдСляСт исполняСмый ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Π’ строкС, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ этот ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π·Π°Π΄Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ доступа ΠΈ имя Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡŒΡ‚Π΅ΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π°, ΠΈ Ρ‚ΠΎΠ³Π΄Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ диск ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³; Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ поиск ΠΏΡ€ΠΈ этом ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Π’ имя Ρ„Π°ΠΉΠ»Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, .EXE ΠΈΠ»ΠΈ .ВАВ.

β€’ Π•сли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° lpApplicationName Ρ€Π°Π²Π½ΠΎ NULL, Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ исполняСмого модуля являСтся пСрвая ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами лСксСм, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ lpCommandLine. Если имя ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ доступа Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, Ρ‚ΠΎ поиск Ρ„Π°ΠΉΠ»Π° осущСствляСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ порядкС: 

 1. ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ модуля Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ процСсса.

 2. Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

 3. Π‘истСмный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Windows, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetSystemDirectory.

 4. ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ Windows, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ GetWindowsDirectory.

 5. ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, пСрСчислСнныС Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния PATH.

Новый процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку посрСдством ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ argv-ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΈΠ»ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetCommandLine для получСния ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠΉ строки символов.

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ командная строка Π½Π΅ являСтся строковой константой. Π­Ρ‚ΠΎ согласуСтся с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ argv Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ константами. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, хотя для внСсСния Π»ΡŽΠ±Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ копию строки Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

ВовсС Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΎΠ²Ρ‹ΠΉ процСсс создавался с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ UNICODE, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ процСсс. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ. ИспользованиС _tmain, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Π² Π³Π»Π°Π²Π΅ 2, ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ смоТСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ с символами Unicode, Ρ‚Π°ΠΊ ΠΈ с символами ASCII.

НаслСдуСмыС дСскрипторы

Часто Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌΡƒ процСссу трСбуСтся доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· дСскриптор, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ процСссС, ΠΈ Ссли этот дСскриптор β€” наслСдуСмый, Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ копию ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ дСскриптора Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ процСсса. Часто ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ обСспСчиваСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования дСскрипторов стандартного Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ процСссом. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ дСскриптора Π² наслСдуСмый, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСсс ΠΌΠΎΠ³ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ копию, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ выполнСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… шагов.

Π€Π»Π°Π³ bInheritHandles, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CreateProcess, опрСдСляСт, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСсс Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΏΠΈΠΈ наслСдуСмых дСскрипторов ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², процСссов ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π­Ρ‚ΠΎΡ‚ Ρ„Π»Π°Π³ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ, Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ всСх дСскрипторов.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ наслСдуСмым любой ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ дСскриптор, Ρ‚Π°ΠΊΠΆΠ΅ трСбуСтся ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ дСйствия, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ дСскрипторы Π½Π΅ становятся Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ наслСдуСмый дСскриптор ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ использования структуры SECURITY_ATTRIBUTES Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания дСскриптора, Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ копирования ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ дСскриптора.

Π’ структурС SECURITY_ATTRIBUTES присутствуСт Ρ„Π»Π°Π³ bInheritHandle, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ установлСно Ρ€Π°Π²Π½Ρ‹ΠΌ TRUE. He Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ элСмСнт nLength Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ:

sizeof(SECURITY_ATTRIBUTES)

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ созданиС наслСдуСмых Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… дСскрипторов Π² Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… случаях. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСскриптор Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π² структурС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ установлСн Π² NULL; ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± использовании дСскрипторов Π·Π°Ρ‰ΠΈΡ‚Ρ‹ говорится Π² Π³Π»Π°Π²Π΅ 15. 

HANDLE h1, h2, h3;

SECURITY_ATTRIBUTES sa = { sizeof(SECURITY_ATTRIBUTES), NULL, TRUE };

…

h1 = CreateFile(…, &sa, …); /* НаслСдуСмый. */

h2 = CreateFile(…, NULL, …); /* НСнаслСдуСмый. */

h3 = CreateFile(…, &sa, …); /* НаслСдуСмый. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС структуры sa. */

Однако Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌΡƒ процСссу Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ наслСдуСмого дСскриптора ΠΏΠΎΠΊΠ° Π΅Ρ‰Π΅ Π½Π΅ извСстно, ΠΈ поэтому Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ процСсс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌΡƒ процСссу Π»ΠΈΠ±ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ мСТпроцСссного взаимодСйствия (Interprocess Communication, IPC), Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ назначСния дСскриптора стандартному устройству Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π² структурС STARTUPINFO, ΠΊΠ°ΠΊ это дСлаСтся Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 6.1), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² рядС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части ΠΊΠ½ΠΈΠ³ΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ послСдний ΠΌΠ΅Ρ‚ΠΎΠ΄ являСтся Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ позволяСт ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ стандартным способом Π±Π΅Π· внСсСния ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½ΡŽΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π’ случаС дСскрипторов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ дСскрипторами Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для пСрСнаправлСния Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ, Π² соотвСтствии с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ дСскриптор прСобразуСтся Π² тСкстовый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈ помСщаСтся Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ лишь Π² Ρ‚ΠΎΠΌ случаС, Ссли дСскриптор являСтся наслСдуСмым, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ, ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСссы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ дСскриптора ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Один ΠΈΠ· способов Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° прСдлагаСтся Π² ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΈ 6.2, Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ приводится Π½Π° Web-сайтС ΠΊΠ½ΠΈΠ³ΠΈ.

УнаслСдованныС дСскрипторы ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ экзСмпляры. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСссы ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΎΠ±ΠΎΠΈΡ… процСссов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ Π΅ΠΌΡƒ дСскриптор.

На рис. 6.2 ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΡ… процСссов с двумя Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ дСскрипторов, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ связаны Π΄Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дСскриптора. ΠŸΡ€ΠΎΡ†Π΅ΡΡ 1 являСтся Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ, процСсс 2 β€” Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ. Если ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌΡƒ процСссу дСскриптор Π±Ρ‹Π» унаслСдован ΠΈΠΌ, ΠΊΠ°ΠΊ это ΠΈΠΌΠ΅Π΅Ρ‚ мСсто Π² случаС дСскрипторов 1 ΠΈ 3, Ρ‚ΠΎ значСния дСскрипторов Π² ΠΎΠ±ΠΎΠΈΡ… процСссах Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ.

Однако ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ дСскрипторы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ значСния. Π’Π°ΠΊ, Π½Π° Ρ„Π°ΠΉΠ» D ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Π²Π° дСскриптора, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ процСсс 2 ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» дСскриптор Π·Π° счСт Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CreateFile, Π° Π½Π΅ ΠΏΡƒΡ‚Π΅ΠΌ наслСдования. НаконСц, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ситуации, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· процСссов ΠΈΠΌΠ΅Π΅Ρ‚ дСскриптор ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ для Ρ„Π°ΠΉΠ»ΠΎΠ² Π’ ΠΈ Π•. Π’Π°ΠΊ происходит Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° дСскриптор создаСтся Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ процСссом ΠΈΠ»ΠΈ дублируСтся ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΎ Ρ‡Π΅ΠΌ говорится Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "Π”ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ дСскрипторов". 

Рис. 6.2. Π’Π°Π±Π»ΠΈΡ†Ρ‹ дСскрипторов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для Π΄Π²ΡƒΡ… процСссов

Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊΠΈ дСскрипторов процСссов

РаспространСнной ошибкой программистов являСтся ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ дСскрипторов послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π½ΠΈΡ… ΠΎΡ‚ΠΏΠ°Π»Π°; это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ рСсурсов, Ρ‡Ρ‚ΠΎ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ»ΠΈ сбоям Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Π΄Π°ΠΆΠ΅ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ процСссы. Π’ вСрсии NT 5.1 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° новая функция, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ количСство ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… дСскрипторов, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ процСссу. Π’Π°ΠΊΠΈΠΌ способом Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ собствСнный, Ρ‚Π°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ процСссы.