KEXIT(2) LAM LOCAL LIBRARY KEXIT(2)NAME
kexit, _kexit, atkexit - Terminate LAM process.
C SYNOPSIS
int kexit (int errcode);
int _kexit (int errcode);
int atkexit (int (*func)(), char *arg);
FORTRAN SYNOPSIS
subroutine KXIT (errcode)
integer errcode
DESCRIPTION
A LAM process that calls kenter(2) must call kexit() to terminate.
kexit() calls all registered LAM exit functions before informing the
local daemon of its death.
_kexit() may be used instead of kexit() to avoid calling the exit func‐
tions.
The argument to kexit() and _kexit() is an exit code which is sent in a
message to the parent process, if requested by the parent process when
the process was created. See rploadgo(2) and rpwait(2). By convention
the exit code is 0 if the process successfully completed.
An exit function is registered by calling atkexit(). The arguments
passed to atkexit() are the address of the exit function to be called
upon kexit(), and an argument to pass to the exit function when it is
called. (Note that the function may ignore the argument, reverting to
the ANSI standard C library atexit(3) behavior, where no argument is
passable.) There is a limit on how many exit functions may be regis‐
tered. Exit functions are called in reverse order of their registra‐
tion. Some system modules register their own cleanup functions.
kexit() eventually calls kdetach(2) to gracefully detach from the LAM
daemon and exit(3) to actually terminate within the host operating sys‐
tem.
RETURN VALUEkexit() and _kexit() do not return. Upon successful completion,
atkexit() returns 0. Otherwise, -1 is returned and the global variable
errno is set to indicate the error.
ERRORS
ENOEXDESCRIPTORS There is no room left in the internal table of exit
functions.
BUGS
If too many user functions are registered with atkexit() before calling
system functions that also call atkexit(), the latter calls to
atkexit() may fail and some system functions may not be registered. If
the missing exit function is for LAM stream file I/O, some output data
may be lost.
SEE ALSOkdetach(2), kenter(2)LAM 7.1.2 March, 2006 KEXIT(2)