Jak grzecznie zabić proces Windows z cygwin

-1

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?

wertikal
źródło
czy można użyć polecenia kill, aby wysłać sygnał do procesu?
golimar
Zabijanie jest wysyłane tylko do polecenia „cmd”. Muszę go rozpropagować do startJboss.bat (uruchamia proces java serwera)
wertikal
możesz zabić dowolny proces poleceniami kill lub killall ...
golimar
pstree powinien pokazywać dzieci wszystkich procesów, z których można napisać skrypt, który je zabije.
Philip Kearns

Odpowiedzi:

0

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 ...

Anon
źródło