2017-01-10 3 views
1

Я использовал Msys1 в течение многих лет и был использован для CTRL +C для уничтожения процессов, которые я начинаю в своей скорлупе.CTRL + C не работает в msys2

После обновления от Msys1 до Msys2 CTRL +C не работает больше. Например: Я начинаю «делать» пресс CTRL + C. Shell запрашивает завершение и позволяет вводить больше команд, но make.exe все еще работает + работает.

Результат моего анализа:
В Msys1: Shell.exe (12345) начинается make.exe (23456) и make.exe (23456) имеет информацию, что его родитель (12345).
В Msys2: shell.exe (12345) запустит make.exe (23456), а make.exe (23456) имеет информацию о том, что его родителем является (34567), который больше не жив. Поэтому я предполагаю, что Msys2 использует дополнительный процесс для запуска подпроцессов.
Я попытался bash.exe, shell.exe, mintty.exe, ... все, похоже, имеют те же проблемы.

Содержание Я нашел поиска :
Этот билет только фокусируется на отсутствующий типы сигналов -> Я не забочусь об этом.
https://sourceforge.net/p/msys2/tickets/135/

вопрос в этом списке рассылки, кажется, рядом с моей проблемой, но я не понимаю, что я должен изменить, или если изменение может быть сделано только в рамках реализации msys2. (Что такое CREATE_NEW_PROCESS_GROUP и как изменить его?):
https://www.cygwin.com/ml/cygwin/2012-08/msg00062.html

сердечный привет Люка

+1

'SetConsoleCtrlHandler' и флаг' CREATE_NEW_PROCESS_GROUP' являются частью Win32 API - ответы на указанную вами ссылку обсуждают исходный код Cygwin - вы не можете изменять их без изменения исходного кода. – cdarke

+0

Спасибо. Поэтому это можно игнорировать. Я запускаю 64-разрядную систему Windows7 – Luke

+1

Windows API по-прежнему называется «Win32» даже в 64-битных системах. Его исторический, нет «Win64». Это должно было отличить его от старых 16-битных систем. – cdarke

ответ

1

Похож mintty обеспечивает по умолчанию терминалу в для MSYS2 (обратите внимание, что это отличается от оболочки, которая запустить внутри). Если да, то «Ctrl + C убивает нативные (например, MSYS2 скомпилированные) программы, а не посылает зараженный сигнал.« Проблема такая же, как описано выше на https://superuser.com/questions/606201/how-to-politely-kill-windows-process-from-cygwin и MSYS2 wiki porting FAQ.

Если то, что вы пытаетесь использовать, используется при использовании окна терминала (например, запустите cmd.exe из меню «Пуск»), то это проблема, которую вы видите.

Смежные вопросы