Можно ли вручную выйти из 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' в исходном коде предоставит примеры этого в действии.

Другие вопросы по тегам