Я работаю с несколькими системами Windows7-64. Во всех случаях, кроме одного, ввод ^ C в окно CMD с файлом .cmd неизменно (и, как ожидается,) останавливает программу. Что еще более важно, если сценарий .cmd запустил дорогостоящее в вычислительном отношении приложение Win32 (назовите его HIGHCPU), то очевидно, что приложение HIGHCPU слышит ^ C и завершает работу, вызывая завершение сценария .cmd.
Одна специальная машина действует так, как будто приложение HIGHCPU никогда не слышит ^ C. Это приложение просто продолжает работать. Если он завершается или я убиваю его процесс, сценарий .cmd внезапно замечает ^ C и спрашивает, должен ли сценарий быть остановлен.
На всех машинах ^ C действует как текст, выделенный при копировании, в других контекстах, как и ожидалось.
Я проверил, что если я запускаю приложение HIGHCPU непосредственно из командной строки, то ^ C немедленно заставляет его перестать работать и завершиться. Темный угол: HIGHCPU - очень сложное приложение для сборки; кроме того, он перехватывает исключения ^ C, используя стандартный Win32 SEH, и этот механизм перехвата заставляет его завершать работу с ненулевым состоянием.
У меня складывается впечатление, что я как-то настроил Win7 на одной машине, чтобы как-то относиться к ControlC для CMD windows.