Si en bash corro a | b | c | d
en la línea de comando y luego presiono ^C, ¿qué proceso recibe la señal?Enviando SIGINT desde el teclado a comandos canalizados en bash
6
A
Respuesta
9
En resumen, todos lo hacen.
Al configurar una tubería, el shell crea un process group. ^C se interpreta por la disciplina de línea del kernel como la solicitud del usuario para interrumpir el grupo de procesos que se ejecuta actualmente en primer plano. El envío de una señal como SIGINT
a un grupo de procesos entrega automáticamente la señal a todos los procesos en el grupo.
2
me gusta la experimentación mejor:
#!/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"
encadenándolos, correr y romper ellos
[email protected]:~$ /tmp/bla.sh 1 | /tmp/bla.sh 2
^CGOODBYE 2
GOODBYE 1
0
Como se puede ver, ambas ejecuciones tuvieron la señal de interrupción, lo que significa que todos mueren. Además, el orden en que muestran que fueron asesinados es aleatorio, por ejemplo:
[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
Cuestiones relacionadas
- 1. Enviando SIGINT a un subproceso de python
- 2. C# Enviando comandos de teclado a otra ventana/proceso
- 3. ¿Cómo ejecuta Shell los comandos canalizados?
- 4. Ejecutar comandos Bash desde PHP
- 5. ¿Cómo enviar una señal SIGINT desde el script al script? BASH
- 6. Ejecutar secuencia de comandos bash bash desde Emacs
- 7. ¿Cómo llamar comandos bash desde tcl script?
- 8. Ejecutar comandos bash desde un Rakefile
- 9. Enviando comandos al prompt cmd en C#
- 10. enviando correo desde el archivo por lotes
- 11. encontrar resultados canalizados a zcat y luego a la cabeza
- 12. enviando comandos IMAP usando php
- 13. enviando datos desde angularjs a django
- 14. Iniciar un proceso en ssh usando bash y luego matarlo en sigint
- 15. ¿Cómo capturo SIGINT en Python?
- 16. Enviando SMS desde PHP
- 17. $ * en secuencias de comandos bash
- 18. Ejecutar secuencia de comandos bash desde Windows PowerShell
- 19. Enviando comandos AT a través de ADB Android
- 20. ¿Cómo se ejecutan los procesos canalizados con bash en múltiples núcleos?
- 21. Enviando un SMS desde el navegador móvil
- 22. secuencia de comandos bash para comprobar el proceso en ejecución
- 23. Enviando correo a través de sendmail desde python
- 24. Delgado no responde a SIGINT o SIGTERM
- 25. enviando correo desde apache tomcat
- 26. la ejecución de comandos Bash en Python
- 27. Múltiples comandos en un alias para bash
- 28. Variables como comandos en scripts bash
- 29. utilizando comandos de bash en Perl
- 30. enviando múltiples archivos desde el script de shell a través de la entrada estándar