-1

У меня есть файл bat(startJboss.bat), который запускает сервер JBoss. Когда я запускаю его, он создает вывод на стандартную консоль cmd (windows). Когда я хочу вежливо завершить этот процесс, я просто нажимаю Ctrl + C, и завершение работы сервера происходит так, как ожидается.

Я хочу запустить сервер из консоли Cygwin. Так что начинать нормально, просто

cmd /c startJboss.bat

и сервер работает. Я хочу иметь возможность вежливо остановить его и от Cygwin. При нажатии Ctrl + C в cygwin он напрямую закрывает упаковочный cmd, но сигнал уничтожения не распространяется на основной процесс. Таким образом, сервер не выключен должным образом.

Как мне передать сигнал Ctrl + C процессу, который запущен в файле bat?

1 ответ1

0

Предполагая, что ваша консоль Cygwin работает наворочено, похоже, что вы столкнулись с мятной проблемой «Взаимодействие ввода-вывода с программами-инопланетянами» (она же проблема № 56). В вашем случае это проявляется в том, что Ctrl-C внезапно убивает, а не передается программе как сигнал, который нужно поймать и обработать.

К сожалению, mintty не является полноценной заменой консоли Windows, и различные варианты поведения, ожидаемые "родными" программами Windows, не реализованы. Тем не менее, вы могли бы испытать некоторую радость, оборачивая такие нативные программы в winpty при запуске их в mintty ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .