getcontext(2)getcontext(2)NAMEgetcontext(), setcontext() - get and set current user context
The function initializes the structure pointed to by ucp to the current
user context of the calling process. The ucontext_t type that ucp
points to defines the user context and includes the contents of the
calling process' machine registers, the signal mask, and the current
The function restores the user context pointed to by ucp. A successful
call to does not return; program execution resumes at the point speci‐
fied by the ucp argument passed to The ucp argument should be created
either by a prior call to or by being passed as an argument to a signal
handler. If the ucp argument was created with program execution con‐
tinues as if the corresponding call of had just returned. If the ucp
argument was created with program execution continues with the function
passed to When that function returns, the process continues as if after
a call to with the ucp argument that was input to If the ucp argument
was passed to a signal handler, program execution continues with the
program instruction following the instruction interrupted by the sig‐
nal. If the uc_link member of the structure pointed to by the ucp argu‐
ment is equal to 0, then this context is the main context, and the
process will exit when this context returns. The effects of passing a
ucp argument obtained from any other source are unspecified.
On successful completion, does not return and returns 0. Otherwise, a
value of −1 is returned.
and are deprecated and should be used only by legacy applications.
Context APIs are not recommended due to possible compatibility problems
from release to release, because context APIs are very architecture-
specific. The context APIs "expose" the architecture to the applica‐
tion, such that the application may not be compatible with all
If you must use context APIs, be aware of the following:
· Do not copy the context yourself. It is not contiguous. The con‐
text may have pointers that may point back to the original context
rather than in the copied context; hence, it will be broken.
· The size of the context will vary in length from release to release.
No errors are defined.
When a signal handler is executed, the current user context is saved
and a new context is created. If the process leaves the signal handler
via then it is unspecified whether the context at the time of the cor‐
responding call is restored and thus whether future calls to will pro‐
vide an accurate representation of the current context, since the con‐
text restored by may not contain all the information that requires.
Signal handlers should use or instead.
Portable applications should not modify or access the uc_mcontext mem‐
ber of ucontext_t. A portable application cannot assume that context
includes any process-wide static data, possibly including Users manipu‐
lating contexts should take care to handle these explicitly when
SEE ALSOmakecontext(2), sigaction(2), sigaltstack(2), sigprocmask(2),
setjmp(3C), sigsetjmp(3C), <ucontext.h>.