X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Funix.lisp;h=7a1a62888c6d29f34fd0457e39aebf85328226de;hb=c712f88b26cd7547ee984b90e18c134401335bc3;hp=248f72e1c77cfa96b319266f07017bdfe60fe9df;hpb=1d8fbfadd235e156fbbf6e04f5274c748af8416b;p=sbcl.git diff --git a/src/code/unix.lisp b/src/code/unix.lisp index 248f72e..7a1a628 100644 --- a/src/code/unix.lisp +++ b/src/code/unix.lisp @@ -427,9 +427,20 @@ corresponds to NAME, or NIL if there is none." ;;; Terminate the current process with an optional error code. If ;;; successful, the call doesn't return. If unsuccessful, the call ;;; returns NIL and an error number. -(defun unix-exit (&optional (code 0)) - (declare (type (signed-byte 32) code)) - (void-syscall ("exit" int) code)) +(deftype exit-code () + `(signed-byte 32)) +(defun os-exit (code &key abort) + #!+sb-doc + "Exit the process with CODE. If ABORT is true, exit is performed using _exit(2), +avoiding atexit(3) hooks, etc. Otherwise exit(2) is called." + (unless (typep code 'exit-code) + (setf code (if abort 1 0))) + (if abort + (void-syscall ("_exit" int) code) + (void-syscall ("exit" int) code))) + +(define-deprecated-function :early "1.0.56.55" unix-exit os-exit (code) + (os-exit code)) ;;; Return the process id of the current process. (define-alien-routine ("getpid" unix-getpid) int)