вопрос:
Я пишу скрипт, который вызывается с execfile
другим процессом, который я не могу контролировать. Я пытаюсь поймать KeyboardInterrupt
, но, кажется, команда перехвачена вызывающим процессом. Это типично для execfile
?
справочная информация:
Этот другой процесс, FWIW, это Abaqus / CAE, который имеет API-интерфейс Python. Пользовательские скрипты могут вызываться из командной строки с помощью:
abaqus cae nogui=my_script
Это инициализирует встроенную среду Abaqus Python, которая выполняет различные скрытые операции и делает доступными для импорта несколько собственных модулей Python. Затем Abaqus выполняет сценарий пользователя, используя execfile()
.
попыток на данный момент:
Случай 1) Abaqus отлавливает ctl-c
из командной строки и сообщает, что он прерывает программу. Это происходит даже без включения исключения KeyboardInterrupt
в пользовательский скрипт. Проблема: пользовательский скрипт продолжает работать в фоновом режиме.
Случай 2) Добавлен KeyboardInterrupt
try-кроме пользовательского скрипта. Abaqus ловит ctl-c
из командной строки и сообщает, что он прерывает программу - точно так же, как в случае 1. Проблема: Опять же, пользовательский сценарий продолжает выполняться в фоновом режиме, и исключение не выводится на консоль.