Можно ли вручную выйти из Smalltalk vm с кодом возврата?
В принципе, есть ли какой-то аналог exit(-1)
функция в GNU Smalltalk 3.2.5? Или есть способ настроить его так, чтобы в случае возникновения ошибки во время выполнения он возвращал ненулевой код завершения? Я хочу быть в состоянии обнаружить, если gst
успешно выполнил файл кода st или произошла ошибка (синтаксис или время выполнения / исключение).
1 ответ
Решение
Да, это возможно с помощью ObjectMemory quit: 0
или же ObjectMemory quit: 1
и т.д. Исходный код для ObjectMemory quit:
ObjectMemory class >> quit: exitStatus [
"Quit the Smalltalk environment, passing the exitStatus integer
to the OS. Files are closed and other similar cleanups occur."
<category: 'builtins'>
<primitive: VMpr_ObjectMemory_quit>
SystemExceptions.WrongClass signalOn: exitStatus mustBe: SmallInteger
]
Поиск 'quit' в исходном коде предоставит примеры этого в действии.