Почему ловушки иногда игнорируют сигналы?

Как выяснилось, ядро ​​Linux начинает двигаться в сторону Wayland, а не X11, начиная с 17.10. Из-за этого qemuбольше не будет работать.

0
16.12.2020, 13:50
1 ответ

echo byeвыполняется, но вы не видите его. Попробуйте добавить sleep 0.5в цикл while, и вы это увидите.

Цикл while не остановлен, потому что ваш trapиспользовал сочетание клавиш Ctrl/C. Вам нужно добавить команду exitк вашему trap, если вы хотите, чтобы код вышел из:

#!/bin/bash
#
gotcha()
{
    echo "Bye"
    exit 1
}

trap gotcha SIGINT

while :
do 
    echo "Hello"
    sleep 0.5
done

Одна действительно важная вещь, которую нужно понять о функции trap, заключается в том, что она не сработает, пока не завершится выполнение текущей команды (, какой бы она ни была )в сценарии. Таким образом, вы не обязательно можете использовать его для прерывания длительно выполняющейся команды -.

2
18.03.2021, 22:42

Теги

Похожие вопросы