Я пытаюсь устранить неполадки в примере, касающемся прерываний сигналов bash-скрипта, данных во время лекции. Я скопировал и вставил код в скрипт, но его выполнение приводит к нежелательному и неожиданному выходу из системы в конце. Инструктор не упоминает, что это может произойти, и у меня сложилось впечатление, что этого не должно быть. Однако после того, как я не смог связаться с моими ТА и сокурсниками, я обращаюсь к вам за помощью!
Полный слайд, который я рассматриваю, можно найти на странице 15 здесь: http://web.engr.oregonstate.edu/~brewsteb/CS344Slides/3.3%20Signals.pdf
Ожидаемый результат :
Triggering a child process termination with a silent ls SIGCHLD Received!
Exiting! [1]+ Done sigchldtest
Фактический результат :
Triggering a child process termination with a silent ls
os1 ~/344_operating_systems/examples 1062$ SIGCHLD Received! Exiting!
logout
---------------
Сценарий, sigchldtest:
#!/bin/bash
set -m trap "echo 'Triggering a child process termination with a silent ls'; ls > /dev/null" USR1
trap "echo 'SIGCHLD Received! Exiting!'; exit 0" CHLD
while [ 1 -eq 1 ]
do
echo "nothing" > /dev/null
done
Консольный ввод:
sigchldtest &
kill -SIGUSR1 [sigchldtest pID]
Выполненные шаги
Удалено «ls> / dev / null» из строки 3. Код выполняется, но не вызывает прерывание сигнала CHLD, как и ожидалось.
Удален «выход 0» из строки 4. Оболочка не выходит из системы после завершения, но пользователь должен нажать «ввод», чтобы вернуться в командную строку, и сценарий продолжает работать в фоновом режиме (не желательно). Кроме того, имя пути не должно быть напечатано до «SIGCHLD Received!». Похоже, что командная строка активируется в середине моего скрипта?
Triggering a child process termination with a silent ls
os1 ~/344_operating_systems/examples 1010$ SIGCHLD Received! Exiting!
{USER MUST PRESS ENTER HERE}
$
- Попытка процесса в консоли PuTTY и Windows 10. Результат один и тот же.
- Попытка убить процесс в другом терминале за Ferrybig . Уничтожение процесса во втором терминале вышло из первого, лол!
Спасибо за ваше время!