Наследование дескрипторов

Дочерний процесс, чтобы наследовать некоторые из дескрипторов своего родителя, но не наследует другие. Чтобы заставить дескриптор быть унаследованным, Вы должны сделать две вещи:

Унаследованный дескриптор относится к тому же самому объекту в дочернем процессе, поскольку это происходит в родительском процессе. К тому же он имеет то же самое значение и привилегии доступа. Поэтому, когда один процесс изменяет состояние объекта, изменение воздействует на оба процесса. Чтобы использовать дескриптор, дочерний процесс должен извлечь значение дескриптора и "знать" объект, к которому он обращается. Обычно, родительский процесс сообщает эту информацию дочернему процессу через его командную строку, блок конфигурации, или некоторую форму межпроцессорного взаимодействия.

Функция DuplicateHandle является полезной тогда, если процесс имеет наследуемый открытый дескриптор, а Вы не желаете, чтобы он был унаследован дочерним процессом. В этом случае используйте функцию DuplicateHandle, чтобы открыть дубликат дескриптора, который не может быть унаследован, а затем используйте функцию CloseHandle, чтобы закрыть наследуемый дескриптор. Вы можете также использовать функцию DuplicateHandle, чтобы открыть наследуемый дубликат дескриптора, который не может быть унаследован.

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz