Я добавляю этот вопрос, потратив целый день на борьбу с этой невероятно неприятной функцией командной строки Windows 10, которая заставила меня подумать, что с кодом моего консольного приложения что-то не так. Надеюсь, это кому-то поможет.
Проблема: мое консольное приложение перестает работать случайным образом. Что здесь происходит?
command-line
windows-10
command-prompt
freeze
Шон Роуэн
источник
источник
Ответы:
Проблема оказалась в новой функции консоли Windows 10. В конфигурации по умолчанию всякий раз, когда вы щелкаете по командному окну в Windows 10, он немедленно останавливает процесс приложения, когда пытается записать в консоль. Когда это происходит, командное окно переходит в режим «выбора».
Вы можете сказать, что это произошло, потому что в строке заголовка командного окна будет стоять слово «Выбрать»:
Чтобы ваша программа снова заработала, вам нужно нажать escape или щелкнуть в другом месте.
Чтобы избавиться от этого странного поведения, вы можете отключить режим QuickEdit:
источник
Что я хотел бы добавить здесь к ответу Шона Роуэна, так это то, что для того, чтобы он работал во всех окнах консоли, вам нужно нажать «По умолчанию» вместо «Свойства» и внести там свои изменения, как описано в этом сообщении .
источник
Я столкнулся с этой проблемой совсем недавно, когда один из пользователей (у которого был настроен Quickedit в своей командной строке) использовал инструмент, который я разработал на Java, и замораживал инструмент во время его запуска из командной строки.
Наконец, проблема была решена путем перенаправления записи из пакетного сценария в файл, как показано ниже:
необходимо обновить до
источник
SetConsoleMode
(kernel32.dll).