Как закрыть все унаследованные дескрипторы от .NET - PullRequest
0 голосов
/ 01 июня 2018

У меня есть процесс .NET, который запускает другой демоноподобный процесс .NET через класс Process.Поскольку Process использует наследование дескриптора (https://github.com/dotnet/corefx/issues/306),, похоже, что мой демон-процесс предотвратит очистку дескрипторов, принадлежащих родителю.

Поэтому я бы хотел, чтобы дочерний процесс запускалсязакрыв все дескрипторы, которые он унаследовал от своего родителя (за исключением стандартных потоков ввода-вывода). Существует ли .NET API, который позволил бы мне реализовать это?

1 Ответ

0 голосов
/ 01 июня 2018

Я не думаю, что вам нужно слишком беспокоиться об этом.Читая ссылку на github, на которую вы ссылались, и эту статью:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms683463(v=vs.85).aspx

Я не думаю, что есть проблема, если вы явно не создаете файловые дескрипторы и т. Д. В родительском процессе, которыйпомечен как наследуемый.

Другой вариант - использовать PInvoke для ручного вызова CreateProcess, если для InheritHandles установлено значение false.

https://www.pinvoke.net/default.aspx/kernel32/CreateProcess.html

...