Jeśli w bash uruchamiam a | b | c | d
w linii poleceń, a następnie naciśnij ^C, który proces otrzymuje sygnał?Wysyłanie SIGINT z klawiatury na wyprowadzone polecenia w bashu
6
A
Odpowiedz
9
Krótko mówiąc, wszyscy to robią.
Podczas konfiguracji potoku powłoka tworzy process group. ^C interpretowana jest przez dyscyplinę liniową jądra jako żądanie użytkownika do przerwania grupy procesów aktualnie uruchomionej na pierwszym planie. Wysyłanie sygnału, takiego jak SIGINT
do grupy procesów, automatycznie dostarcza sygnał do wszystkich procesów w grupie.
2
Lubię eksperymenty lepiej:
#!/bin/bash
# FILE /tmp/bla.sh
# trap ctrl-c and call ctrl_c()
trap ctrl_c INT
MY_ID=$1 # Identifier for messages
function ctrl_c() {
echo >&2 "GOODBYE $MY_ID"
exit
}
# This will continue until interrupted, e.g. if the input/output get closed
cat
# If we somehow got to the end
echo >&2 "grace $MY_ID"
je na łańcuchu, bieganie i ich łamanie
[email protected]:~$ /tmp/bla.sh 1 | /tmp/bla.sh 2
^CGOODBYE 2
GOODBYE 1
0
Jak widać, obie egzekucje dostał sygnał przerwania, czyli wszyscy giną. Co więcej, kolejność, w której wyprowadzane są dane, że zostały zabite, jest losowa, np .:
[email protected]:~$ /tmp/bla.sh 1 | /tmp/bla.sh 2 | /tmp/bla.sh 3 | /tmp/bla.sh 4
^CGOODBYE 2
GOODBYE 4
GOODBYE 1
GOODBYE 3
Powiązane problemy
- 1. Wysyłanie SIGINT do podprocesowania pythona
- 2. Dynamiczne budowanie polecenia w bashu
- 3. C# Wysyłanie wprowadzania klawiatury
- 4. SIGINT, aby anulować czytanie w skrypcie Bash?
- 5. Wysyłanie zdarzeń myszy i klawiatury
- 6. Wysyłanie polecenia IOKit z dynamiczną długością
- 7. W bashu, jak wprowadzić hasło dla polecenia procesu w tle?
- 8. JSON: Typy szeregowania wyprowadzone z IEnumerable
- 9. Przekierowanie wyjścia polecenia do zmiennej w bashu nie
- 10. Cienki nie reaguje na SIGINT lub SIGTERM
- 11. przechwytywanie SIGINT w programie wielowątkowym
- 12. powershell wysyłanie wielu parametrów do zewnętrznego polecenia
- 13. Warunek jednej linii w bashu
- 14. Wysyłanie polecenia do przetwarzania za pomocą/proc
- 15. cięcie ciągu na kilka linii w bashu
- 16. Unikalne linie w bashu
- 17. Wyrzucanie śmieci w bashu
- 18. Catching/blocking SIGINT podczas wywołania systemowego
- 19. Zignoruj wpis ścieżki z zakończeniem bashu
- 20. Otwórz plik w domyślnym edytorze z bashu
- 21. Jak wyjść z funkcji w bashu
- 22. Typ wejściowy klawiatury klawiatury iOS z przecinkiem
- 23. Szybkie wyszukiwanie opcji poleceń w bashu
- 24. Otrzymuj kolorowe wydruki w bashu
- 25. Interfejs C dla bashu interaktywnego
- 26. Tymczasowe przekierowanie wejścia w bashu
- 27. Wysyłanie komend MCCS na kakao
- 28. Wysyłanie poleceń binarnych z PHP na drukarkę termiczną Arduino
- 29. Pośrednie przypisanie zmiennej w bashu
- 30. przywrócić usunięte polecenie w bashu