Sto cercando di catturare il segnale SIGUSR1
in uno script bash che sta dormendo tramite il comando sleep
:interrompere il sonno in bash con una trappola segnale
#!/bin/bash
trap 'echo "Caught SIGUSR1"' SIGUSR1
echo "Sleeping. Pid=$$"
while :
do
sleep 10
echo "Sleep over"
done
il segnale di opere trappola, ma il messaggio è sentimento è condiviso non visualizzato finché non è terminato lo sleep 10
.
Appare che la gestione del segnale di bash attende fino a quando il comando corrente è terminato prima di elaborare il segnale.
C'è un modo per interrompere il comando in esecuzione sleep
non appena riceve il segnale, allo stesso modo in cui un programma C interromperà la funzione libc sleep()
?
Alcuni [info rilevanti] (http://mywiki.wooledge.org/SignalTrap#When_is_the_signal_handled.3F) – iruvar
Sostituire 10 con l'infinito, come "infinito sleep &" – gregoiregentil
@iruvar tuo link vale il suo peso in oro. non essere in grado di interrompere un sonno da un processo diverso * molto molto molto contro-intuitivo *. –