ProcessStartInfo.InheritedHandles Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define uma lista de identificadores a serem herdados pelo processo filho.
public:
property System::Collections::Generic::IList<System::Runtime::InteropServices::SafeHandle ^> ^ InheritedHandles { System::Collections::Generic::IList<System::Runtime::InteropServices::SafeHandle ^> ^ get(); void set(System::Collections::Generic::IList<System::Runtime::InteropServices::SafeHandle ^> ^ value); };
public System.Collections.Generic.IList<System.Runtime.InteropServices.SafeHandle>? InheritedHandles { get; set; }
member this.InheritedHandles : System.Collections.Generic.IList<System.Runtime.InteropServices.SafeHandle> with get, set
Public Property InheritedHandles As IList(Of SafeHandle)
Valor da propriedade
Uma lista de SafeHandle objetos a serem herdados explicitamente pelo processo filho ou null usar o comportamento padrão de herança do identificador.
Comentários
Quando essa propriedade não nullestiver, a herança do identificador será restrita aos identificadores padrão e aos identificadores dessa lista. Se a lista estiver vazia, somente as alças padrão serão herdadas.
Somente SafeFileHandle e SafePipeHandle há suporte nesta lista.
Definir essa propriedade em sistemas Unix que não têm suporte nativo para controlar a herança do identificador pode prejudicar severamente o desempenho de início do processo.
Os identificadores nesta lista não devem ter a herança habilitada com antecedência. Se o fizerem, eles poderão ser herdados involuntariamente por outros processos iniciados simultaneamente com APIs diferentes, o que pode levar a problemas de segurança ou gerenciamento de recursos.
Não há suporte para dois processos simultâneos que passam o mesmo identificador InheritedHandles . Em Windows, a implementação modifica temporariamente os sinalizadores de herança de cada identificador. Essas modificações não são thread-safe entre as partidas simultâneas que começam a compartilhar o mesmo identificador.
Essa API não pode ser usada junto com UseShellExecute set to true ou ao especificar um nome de usuário por meio da UserName propriedade.
Em Windows, a implementação habilita temporariamente a herança em cada identificador nesta lista modificando os sinalizadores do identificador usando SetHandleInformation. Depois que o processo filho é criado, a herança é incondicionalmente desabilitada nesses identificadores para impedir que eles sejam herdados por outros processos iniciados com APIs diferentes. Os próprios identificadores não são duplicados; eles são herdáveis e passados para o processo filho.
No Unix, a implementação modifica cada descritor de arquivo no processo filho removendo o sinalizador FD_CLOEXEC. A modificação ocorre após a bifurcação e antes do executivo, portanto, não afeta o processo pai.