2009-09-08 6 views
2

Je veux écrire un programme, qui devrait être notifié par O.S. chaque fois qu'un processus en cours d'exécution sur ce système d'exploitation meurt.Comment être informé lorsqu'un processus se termine sous Windows et Linux?

Je ne veux pas me faire interroger et comparer à chaque fois si un processus déjà existant est mort. Je veux que mon programme soit alerté par le système d'exploitation chaque fois qu'une fin de processus se produit.

Comment procéder? Un exemple de code serait très utile. PS: recherche d'approches en Java/C++.

Répondre

1

Sous Unix, vous pouvez utiliser le signal sigchld pour être informé du décès du processus. Cela nécessite toutefois que le processus surveillé soit un processus enfant du processus de surveillance. Sous Windows, il se peut que vous ayez besoin d'un handle valide pour le processus. Si vous lancez le processus vous-même en utilisant CreateProcess, vous obtenez le handle gratuitement, sinon vous devez acquérir par d'autres moyens. Il peut alors être possible d'attendre que le processus se termine en appelant WaitForSingleObject sur le descripteur. Désolé, je n'ai pas d'exemple de code pour cela. Je ne suis même pas sûr, que l'attente sur le handle de processus sous Windows attend vraiment la fin du processus (par opposition à une autre condition «significative», qui amène le handle de processus à entrer dans l'état «signalé» ou quelque chose).

+0

Salut Dirk, Il semble possible de cette façon aussi. Je vais l'essayer. Merci. –

Questions connexes