Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ./../../../../../../usr/man/man3c/./stack_violation.3c
Real path: /usr/share/man/man3c/stack_violation.3c
Zurück
'\" te .\" Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved. .TH stack_violation 3C "18 Jul 2002" "Oracle Solaris 11.4" "Standard C Library Functions" .SH NAME stack_violation \- determine stack boundary violation event .SH SYNOPSIS .LP .nf #include <ucontext.h> \fBint\fR \fBstack_violation\fR(\fBint\fR \fIsig\fR, \fBconst siginfo_t *\fR\fIsip\fR, \fBconst ucontext_t *\fR\fIucp\fR); .fi .SH DESCRIPTION .sp .LP The \fBstack_violation()\fR function returns a boolean value indicating whether the signal, \fIsig\fR, and accompanying signal information, \fIsip\fR, and saved context, \fIucp\fR, represent a stack boundary violation event or a stack overflow. .SH RETURN VALUES .sp .LP The \fBstack_violation()\fR function returns 0 if the signal does not represent a stack boundary violation event and 1 if the signal does represent a stack boundary violation event. .SH ERRORS .sp .LP No errors are defined. .SH EXAMPLES .LP \fBExample 1\fR Set up a signal handler to run on an alternate stack. .sp .LP The following example sets up a signal handler for \fBSIGSEGV\fR to run on an alternate signal stack. For each signal it handles, the handler emits a message to indicate if the signal was produced due to a stack boundary violation. .sp .in +2 .nf #include <stdlib.h> #include <unistd.h> #include <ucontext.h> #include <signal.h> static void handler(int sig, siginfo_t *sip, void *p) { ucontext_t *ucp = p; const char *str; if (stack_violation(sig, sip, ucp)) str = "stack violation.\en"; else str = "no stack violation.\en"; (void) write(STDERR_FILENO, str, strlen(str)); exit(1); } int main(int argc, char **argv) { struct sigaction sa; stack_t altstack; altstack.ss_size = SIGSTKSZ; altstack.ss_sp = malloc(SIGSTKSZ); altstack.ss_flags = 0; (void) sigaltstack(&altstack, NULL); sa.sa_sigaction = handler; (void) sigfillset(&sa.sa_mask); sa.sa_flags = SA_ONSTACK | SA_SIGINFO; (void) sigaction(SIGSEGV, &sa, NULL); /* * The application is now set up to use stack_violation(3C). */ return (0); } .fi .in -2 .sp .SH USAGE .sp .LP An application typically uses \fBstack_violation()\fR in a signal handler that has been installed for \fBSIGSEGV\fR using \fBsigaction\fR(2) with the \fBSA_SIGINFO\fR flag set and is configured to run on an alternate signal stack. .SH ATTRIBUTES .sp .LP See \fBattributes\fR(7) for descriptions of the following attributes: .sp .TS tab( ) box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . ATTRIBUTE TYPE ATTRIBUTE VALUE _ Interface Stability Committed _ MT-Level Async-Signal-Safe .TE .sp .SH SEE ALSO .sp .LP \fBsigaction\fR(2), \fBsigaltstack\fR(2), \fBstack_getbounds\fR(3C), \fBstack_inbounds\fR(3C), \fBstack_setbounds\fR(3C), \fBattributes\fR(7)