Почему Python игнорирует SIGINT при запуске с помощью & из сценария оболочки?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему Python игнорирует SIGINT при запуске с помощью & из сценария оболочки?

Сообщение Anonymous »

При отладке другого вопроса я обнаружил, что если Python запускается из сценария оболочки с помощью &, настройки обработки сигнала для SIGINT изменяются, чтобы игнорировать его. содержимое:

Код: Выделить всё

import signal
print(signal.getsignal(signal.SIGINT))

Код: Выделить всё

noproblem.sh
содержимое:

Код: Выделить всё

python3 x.py

Код: Выделить всё

problem.sh
содержимое:

Код: Выделить всё

python3 x.py &
При запуске x.py напрямую, напрямую с помощью & или через noproblem.sh обработчик сигнала для SIGINT является сигналом по умолчанию. default_int_handler, который отвечает за вызов KeyboardInterrupt:

Код: Выделить всё

07:14 ~ $ python3 x.py

07:14 ~ $ python3 x.py &
[1] 126909
07:14 ~ $ 

[1]+  Done                    python3 x.py
07:14 ~ $ bash noproblem.sh

Но при запуске x.py через проблемный.sh SIGINT игнорируется:

Код: Выделить всё

07:14 ~ $ bash problem.sh
07:14 ~ $ Handlers.SIG_IGN
Мне не удалось найти документацию, объясняющую, почему это может произойти. В документации модуля signal такое поведение не упоминается. Это намеренно или ошибка?

Подробнее здесь: https://stackoverflow.com/questions/654 ... ell-script
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»