Mam plik bat (startJboss.bat), który uruchamia serwer JBoss. Po uruchomieniu tworzy wyjście do standardowej konsoli cmd (windows). Kiedy chcę uprzejmie zakończyć ten proces, po prostu wciskam Ctrl + C, a zamknięcie serwera jest zgodne z oczekiwaniami.
Chcę uruchomić serwer z konsoli cygwin. Więc start jest w porządku, po prostu
cmd / c startJboss.bat
a serwer jest włączony. Chcę też móc grzecznie powstrzymać to od cygwina. Kiedy wciskasz Ctrl + C w cygwin, zamyka on zawijanie cmd bezpośrednio, ale sygnał zabicia nie jest propagowany do procesu bazowego. Więc serwer nie został poprawnie zamknięty.
Jak propagować sygnał Ctrl + C do procesu uruchamianego w pliku bat?
command-line
cygwin
wertikal
źródło
źródło
Odpowiedzi:
Zakładając, że twoja konsola cygwin jest miętowa, brzmi to jak uderzenie mięta „Interakcja wejścia / wyjścia z programami obcymi” problem (aka problem mennicy # 56 ). W twoim przypadku przejawia się to jako nagłe zabijanie Ctrl-C, a nie przekazywanie go do programu jako sygnał do złapania i obsługi.
Niestety Miętówka nie jest pełną wymianą konsoli Windows a różne zachowania oczekiwane przez „rodzime” programy Windows nie są implementowane. Jednak możesz mieć trochę radości w pakowaniu takich rodzimych programów winpty kiedy je prowadzę w okresie mennicy ...
źródło