Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

héritage de handles et CreateProcess

2 réponses
Avatar
Fred
Bonjour à tous,

j'ai une petite question concernant le passage de handle via la fonction
CreateProcess.

Voici la situation:
j'ai un process "A" qui démarre un process "B", puis qui se boucle sur
un accept dans l'attente d'un message.
Je souhaiterais qu'une fois l'accept passé, le process "B" soit en
mesure de traiter (lecture + écriture) le socket à la place du process "A".
CreateProcess permet (via bInheritHandles) de mettre à disposition de
"B" les handles existants de "A"... mon problème est qu'au démarrage de
"B", le socket créé par l'accept n'existe pas encore.

Y'a-t-il un moyen, à votre connaissance, de faire une telle chose?

Merci d'avance.

Fred

2 réponses

Avatar
Christophe Leitienne
Fred wrote:
> Voici la situation:
> j'ai un process "A" qui démarre un process "B", puis qui se boucle sur
> un accept dans l'attente d'un message.
> Je souhaiterais qu'une fois l'accept passé, le process "B" soit en
> mesure de traiter (lecture + écriture) le socket à la place du
process "A".
> CreateProcess permet (via bInheritHandles) de mettre à disposition de
> "B" les handles existants de "A"... mon problème est qu'au démarrage de
> "B", le socket créé par l'accept n'existe pas encore.
>
> Y'a-t-il un moyen, à votre connaissance, de faire une telle chose?

Oui: dans A tu dupliques le handle de la socket afin qu'il soit
utilisable dans B avec la fonction DuplicateHandle.
Ensuite tu transmet ce nouveau handle à B (et utilisable uniquement dans
B) avec l'IPC de ton choix.
Avatar
Fred
Christophe Leitienne wrote:
Fred wrote:
> Voici la situation:
> j'ai un process "A" qui démarre un process "B", puis qui se boucle sur
> un accept dans l'attente d'un message.
> Je souhaiterais qu'une fois l'accept passé, le process "B" soit en
> mesure de traiter (lecture + écriture) le socket à la place du
process "A".
> CreateProcess permet (via bInheritHandles) de mettre à disposition de
> "B" les handles existants de "A"... mon problème est qu'au démarrage de
> "B", le socket créé par l'accept n'existe pas encore.
>
> Y'a-t-il un moyen, à votre connaissance, de faire une telle chose?

Oui: dans A tu dupliques le handle de la socket afin qu'il soit
utilisable dans B avec la fonction DuplicateHandle.
Ensuite tu transmet ce nouveau handle à B (et utilisable uniquement dans
B) avec l'IPC de ton choix.



Ok, merci beaucoup.
A et B communiquent déjà via un pipe nommé... le handle dupliqué sera
donc véhiculé par là.

Fred