4.37 User Top-level Manipulation
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
      • Built-in Predicates
        • User Top-level Manipulation
          • break/0
          • abort/0
          • halt/0
          • halt/1
          • prolog/0
          • expand_query/4
          • expand_answer/2
    • Packages
Availability:built-in
[ISO]halt(+Status)
Terminate Prolog execution with Status. This predicate calls PL_halt() which preforms the following steps:

  1. Set the Prolog flag exit_status to Status.

  2. Call all hooks registered using at_halt/1. If Status equals 0 (zero), any of these hooks calls cancel_halt/1, termination is cancelled.

  3. Call all hooks registered using PL_at_halt(). In the future, if any of these hooks returns non-zero, termination will be cancelled. Currently, this only prints a warning.

  4. Perform the following system cleanup actions:

    • Cancel all threads, calling thread_at_exit/1 registered termination hooks. Threads not responding within 1 second are cancelled forcefully.
    • Flush I/O and close all streams except for standard I/O.
    • Reset the terminal if its properties were changed.
    • Remove temporary files and incomplete compilation output.
    • Reclaim memory.

  5. Call exit(Status) to terminate the process

halt/1 has been extended in SWI-Prolog to accept the arg abort. This performs as halt/1 above except that:

  • Termination cannot be cancelled with cancel_halt/1.
  • abort() is called instead of exit(Status).