Próbuję złapać sygnał SIGUSR1
w skrypcie bash, który jest snem za pomocą polecenia sleep
:przerwania snu w bash z pułapki sygnału
#!/bin/bash
trap 'echo "Caught SIGUSR1"' SIGUSR1
echo "Sleeping. Pid=$$"
while :
do
sleep 10
echo "Sleep over"
done
sygnał prac pułapkę, ale wiadomość jest echem jest nie wyświetla się, dopóki nie zakończy się sleep 10
.
Wygląda na to, że obsługa sygnału bash czeka aż bieżące polecenie zostanie zakończone przed przetworzeniem sygnału.
Czy istnieje sposób, aby przerwać uruchomione polecenie sleep
, gdy tylko otrzyma sygnał, w ten sam sposób, w jaki program C przerwałby funkcję libc sleep()
?
Niektóre [istotne info] (http://mywiki.wooledge.org/SignalTrap#When_is_the_signal_handled.3F) – iruvar
Wymień 10 od nieskończoności, takich jak „uśpienia nieskończoności &” – gregoiregentil
@iruvar link jest warta swojej wagi w złocie. nie jest w stanie przerwać snu z innego procesu * bardzo, bardzo, bardzo intuicyjnie *. –