Se in bash eseguo a | b | c | d
sulla riga di comando e quindi preme ^C, quale processo riceve il segnale?Invio di SIGINT dalla tastiera ai comandi con pipe in bash
6
A
risposta
9
In breve, lo fanno tutti.
Quando si imposta una pipeline, la shell crea uno process group. ^C viene interpretato dalla disciplina della linea del kernel come richiesta dell'utente di interrompere il gruppo di processi attualmente in esecuzione in primo piano. L'invio di un segnale come SIGINT
a un gruppo di processi invia automaticamente il segnale a tutti i processi nel gruppo.
2
mi piace la sperimentazione meglio:
#!/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"
loro concatenazione, l'esecuzione e la rottura di loro
[email protected]:~$ /tmp/bla.sh 1 | /tmp/bla.sh 2
^CGOODBYE 2
GOODBYE 1
0
Come si può vedere, entrambe le esecuzioni ottenuto il segnale di interruzione, nel senso che tutti vengono uccisi. Inoltre, l'ordine in cui emettono che sono stati uccisi è casuale, ad esempio
[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
Problemi correlati
- 1. Python - Come chiamare i comandi di bash con pipe?
- 2. Scala - comandi shell con pipe
- 3. Catch SIGINT in bash, handle AND ignora
- 4. C# Invio di comandi da tastiera a un'altra finestra/processo
- 5. Invio di SIGINT a un sottoprocesso di python
- 6. bash pipe & SIGTERM
- 7. Accesso ai comandi di bash per comandi specifici a livello di programmazione
- 8. Invio SIGINT (Ctrl-C) per programmare l'esecuzione in Eclipse Console
- 9. Come inviare INVIO dalla tastiera utilizzando TestStack.White Framework
- 10. SIGINT per annullare la lettura in bash script?
- 11. Bash - Escaping comandi SSH
- 12. Combinazione di comandi R + awk + bash
- 13. eseguendo più comandi bash con sottoprocesso
- 14. Come svuotare una pipe usando la bash
- 15. Le app "packaged" di Chrome possono rispondere ai comandi globali della tastiera?
- 16. invio comandi IMAP usando php
- 17. Invio di dati ai lavoratori
- 18. Python - come eseguire i comandi della shell con pipe?
- 19. Invio di comandi al prompt di cmd in C#
- 20. Esempio di utilizzo di named pipe in Linux Bash
- 21. Invio modulo tastiera mobile Safari
- 22. php stdin da pipe bash e heredoc
- 23. Invio di comandi MCCS su Cocoa
- 24. Invio di comandi AT tramite ADB Android
- 25. Uscita pipe e stato di uscita acquisizione in Bash
- 26. Bash, reindirizzamento stdout di comandi come scp
- 27. cattura SIGINT in un programma con multithreading
- 28. Variabili come comandi negli script di bash
- 29. Lasciate trappola Bash DEBUG vedere pipe come un comando
- 30. Invio di numerosi comandi SQL in una singola transazione