Salut à tous,

J'ai réalisé en C++ un launcher (sous Windows), qui lance un processus grâce à la fonction CreateProcess().

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
	// start the child process
	if (CreateProcess(NULL,			// use cmdline
		argv[1],					// cmdline
		NULL,						// process handle inheritance
		NULL,						// thread handle inheritance
		FALSE,						// handle inheritance
		0,							// creation flag
		NULL,						// parent's environment
		NULL,						// parent's starting directory
		&si,						// STARTUPINFO
		&pi) == FALSE)				// PROCESS_INFO
	{
		TRACEIT("CreateProcess failed (%d)", GetLastError());
		return -1;
	}
Un WaitForSingleObject() sur le handle retourné me permet d'attendre la fin du processus lancé, et de passer à la suite du code. Si je tue le processus lancé, alors le launcher reprend la main, et continue son exécution. Par contre, si je tue le launcher, le processus lancé n'est pas tué.

Existe t il un moyen afin que, si le launcher est tué (via le Gestionnaire de tâches), alors il tue tous les processus qu'il a lancé ?

Merci.