Знаете ли вы, что...
При выделении содержимого окна командного интерпретатора любая выполняющаяся в нём программа, скрипт или команда ставится на паузу. И стоит на паузе до тех пор, пока выделение не будет снято.
Попробуйте сами:
-
Откройте cmd.exe и включите в настройках возможность выделения текста (т.н. режим редактирования).
Правая кнопка мыши на заголовок, меню «Свойства», вкладка «Общие», группа «Редактирование», галка «Выделение мышью».
Процедура «Редактирования» выглядит следующим образом: с нажатой левой кнопкой мыши можно выделить прямоугольник, а при нажатии правой кнопки мыши текст из прямоугольника падает в буфер обмена. Выделение при этом снимается.
Эта настройка стоит практически у любого виндуз-админа, потому что информацию из cmd надо часто копировать.
-
Сэмулируйте запуск продолжительного скрипта, который делает важные вещи. Например, вот так:
ping -t localhost
Выделите что-нибудь. Можно даже «случайно» ткнуть мышью в любое место: выделится один символ под указателем.
Материтесь.
Поясняющий рисунок «Зависший пинг».
Внимание на белый прямоугольник справа от вывода. Это выделение.
О том, что это именно выделение, свидетельствует и изменившийся заголовок окна: к нему добавилось слово «Выбрать».
Кстати, при прокрутке содержимого окна ползунком — исполняемый внутри скрипт тоже ставится на паузу. До тех пор, пока левая кнопка мыши не будет отжата.
Толковым программистам из микрософта нужно было побороть ситуацию, когда текст в выделенной области может меняться в результате работы скрипта или программы. Толковые программисты из микрософта нашли самый лучший вариант: приостановленная программа не сможет изменить содержимое окна!
И ниибёт.
Даже если в окне у тебя выполняется суточный бэкап, а ты ткнул в него мышью совершенно случайно.
Протестировано в:
- Windows 2003 SP2
- Windows XP SP3
- Windows 7 (спс. Димитрий!, я также проверил на SP1, подтверждаю)
- Windows 10 (спс. Ринат)
Комментарии
Димитрий!
#cid35606
Ответить
на семерке тож протестировано (
#cid36527
Ответить
#cid35606, Димитрий!
Добавил, спасибо!
dmitry tarakanov
#cid51158
Ответить
А ткнуть случайно на "крестик" закрыть при этом - это нормально или снова microsoft виноват? Или на кнопку "power off" на клавиатуре?
imen
#cid51180
Ответить
#cid51158, dmitry tarakanov
А вот и иллюстрация феномена юридической доказуемости :)
Рассказывает нам о нормальности привычных _ему_ костылей.
Ответь лучше на пару вопросов:
1. В восьмёрочке... фича воспроизводится?
2. Вкладки (табы) в эмуляторе терминала уже "изобрели"? Или ситуация аналогична виртуальным рабочим столам?
Лично мне здесь сразу вспомнился шедевр интуитивности и эргономики в виде расположения кнопки выключения питания непосредственно под клавишей Delete...
:)))
#cid51207
Ответить
#cid51158, dmitry tarakanov
Крестик закрывает окно. Это очевидное, понятное и документированное событие. Хотя, нормальные приложения даже перед таким закрытием выдадут предупреждение, что в окне выполняется процесс и попросят подтвердить выход (cmd, кстати, этого не делает).
А вот то, что выделение текста ставит процесс на паузу — вот это как раз нихера не очевидно и не нормально. Это — неадекватное поведение программы. Так не должно быть. Выделение логов процесса логически никак не связано с работоспособностью всего процесса.
Понятна ли тебе разница между документированным событием и откровенным багом?
Rinat
#cid90814
Ответить
Win 10 работает)
#cid90815
Ответить
#cid90814, Rinat
Спасибо, добавил )))
Dez
#cid92310
Ответить
Windows 10, за 5 лет ничего не изменилось. Периодически смотрю работает ли скрипт, который крутится круглосуточно. Один раз из 10 случайно ставлю его на паузу, и потом матерюсь.
Ramka
#cid92481
Ответить
Ну так это же отключаецца. Тыкаешь в свойства окна (иконку самого окна в левом верхнем угле) и на первой вкладке убираешь галку "выделение мышью" или "Quick edit mode". Т.е. это не баг, это фича. Более того оно запомницца и при следующем запуске эта галочка так-же останецца.