[Edycja: Wygląda podobnie do niektórych innych pytań dotyczących sposobu zabicia wszystkich spawnowanych procesów - wszystkie odpowiedzi wydają się używać pkill. Więc rdzeniem mojego pytania może być: Czy istnieje sposób na propagowanie Ctrl-C / Z we wszystkich procesach spawnowanych przez skrypt?]
Podczas wywoływania SoX rec
za pomocą timeout
polecenia z coreutils (omówione tutaj ), wydaje się, że nie ma sposobu na zabicie go za pomocą klawisza po wywołaniu go ze skryptu Bash.
Przykłady:
timeout 10 rec test.wav
... można zabić za pomocą Ctrl+ Club Ctrl+ Zz bash, ale nie wtedy, gdy zostanie wywołany z poziomu skryptu.
timeout 10 ping nowhere
... można zabić za pomocą Ctrl+ Club Ctrl+ Zz bash i Ctrl+, Zgdy jest uruchamiany ze skryptu.
Mogę znaleźć identyfikator procesu i zabić go w ten sposób, ale dlaczego nie mogę użyć standardowego naciśnięcia klawisza break? Czy jest jakiś sposób na ustrukturyzowanie mojego skryptu, aby mógł?
timeout
w swoim systemie, ale zabijanie sleep
działa bez względu na to, czy jest wpisywane bezpośrednio w wierszu polecenia, pozyskiwane, wykonywane lub przekazywane jawnie przez tłumacza
bg
zfg
poleceniami. W każdym razie, czy jest jakaś różnica między twoim 1. a 3d przykładem?