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?


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.