Question

Windows prend en charge Sigint Dans les applications de console en réponse à Ctrl-C. Cela implique que Windows a des fonctionnalités pour interrompre un thread en cours d'exécution à partir d'un thread distant (processus uniforme!) Et invoquer un gestionnaire de signaux.

Comment cela fonctionne-t-il exactement au niveau de l'API natif NT? Cette API d'interruption de thread peut-elle être utilisée à d'autres fins dans l'espace utilisateur?

Était-ce utile?

La solution

Selon http://msdn.microsoft.com/en-us/library/xdkz3x12(v=vs.71).aspx, un Sigint provoque la création d'un nouveau fil pour gérer l'interruption.

Il semble donc qu'il n'interrompt pas vraiment de fils en cours d'exécution. Vous pouvez obtenir le même effet en reproduisant simplement votre propre fil.

Il y a plus de commentaires ici:

Autres conseils

Vous pouvez toujours suspendre le thread cible, réparer le contexte pour exécuter votre procédure, puis le reprendre. C'est moche, mais cela fonctionnerait si vous vouliez interrompre un fil pour exécuter une procédure.

La console et le gestionnaire Ctrl + C sont des constructions Win32 et n'existent pas vraiment au niveau de l'API natif.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top