J'ai une console en mode d'application Windows (porté à partir d'Unix) qui a été conçu à l'origine pour faire un nettoyage de sortie quand il a reçu ^C (Unix SIGINT
). Un nettoyage de sortie dans ce cas implique d'attendre, potentiellement un temps assez long, pour les connexions réseau distant à fermer. (Je sais que ce n'est pas le comportement normal d' ^C mais je ne suis pas en mesure de le changer.) Le programme est mono-thread.
Je peux piège ^C soit avec signal(SIGINT)
(comme sous Unix) ou avec SetConsoleCtrlHandler
. Soit fonctionne correctement lorsque le programme est exécuté en vertu de CMD.EXE. Cependant, si j'utilise le "bash" shell qui vient avec MSYS (je suis à l'aide de l'environnement MinGW pour construire le programme, car cela me permet de réutiliser le makefile Unix), alors le programme de fermeture forcée du hasard, le temps court (moins de 100 millisecondes) après le ^C. C'est inacceptable, car comme je l'ai mentionné, le programme doit attendre les connexions réseau distant à fermer.
Il est très probable que les gens vont vouloir exécuter ce programme en vertu de la pme de bash. Aussi, cet effet sauts de la suite de test. Je n'ai pas été en mesure de trouver un moyen de contourner le problème dans le programme (idéal) ou par des paramètres sur la coquille (acceptable). Quelqu'un peut-il recommander quoi que ce soit?