runtime_constraint_handler(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

runtime_constraint_handler(3c)

runtime_..._handler(3C)  Standard C Library Functions  runtime_..._handler(3C)

NAME
       runtime_constraint_handler, abort_handler_s, ignore_handler_s, set_con‐
       straint_handler_s - Runtime-constraint handler functions for the bounds
       checking interfaces

SYNOPSIS
       #define __STDC_WANT_LIB_EXT1__ 1
       #include <stdlib.h>


       void abort_handler_s(const char *msg, void *ptr, errno_t error);


       void ignore_handler_s(const char *msg, void *ptr, errno_t error);


       constraint_handler_t set_constraint_handler_s(
            constraint_handler_t handler);

DESCRIPTION
       The runtime-constraint handler APIs are part of the C11 bounds checking
       interfaces  specified in the C11 standard, Annex K. They can be used by
       the application to manage the actions taken when a library function de‐
       fined to check for runtime-constraints detects a runtime-constraint vi‐
       olation. When such a function detects a  runtime-constraint  violation,
       the  currently  registered  runtime-constraint  handler,  set using the
       set_constraint_handler_s() function, will be called. See INCITS/ISO/IEC
       9899:2011.


       The  standard  allows  for  implementation  specific  features  of  the
       abort_handler()   and  the  set_constraint_handler_s()  functions.  The
       abort_handler_s() function writes a message on the  standard  error  as
       follows:

         (void) fputs(msg, stderr);
         (void) fputc('\n', stderr);



       When  the  handler  set  by  the set_constraint_handler_s() function is
       called, it is passed a number of  arguments  in  a  defined  order.  Of
       these, two of the arguments are implementation defined as follows:


       The second argument is a pointer to an object defined as:

         typedef struct __rcviolation_info {
             const char * __function_name;  /* function detected violation */
             int          __error_raw;      /* _RCVIOLATION_* or errno */
             int          __error;          /* canonical errno */
             long         __pad[8];
         } __rcviolation_info_t;



       The  fourth argument is the default constraint handler used if no calls
       have been made to  the  set_constraint_handler_s()  function.  In  this
       case, the ignore_handler_s() function is the default constraint handler
       used.

RETURN VALUES
       abort_handler_s()           No return value


       ignore_handler_s()          No return value


       set_constraint_handler_s()  Returns  a pointer to the previously regis‐
                                   tered handler


EXAMPLES
       Example 1 Calling the Runtime-Constraint Handler



       The following example calls the runtime-constraint handler, set by  the
       set_constraint_handler_s() function when a NULL pointer is passed as an
       argument to tmpfile_s() function.


         #include <stdio.h>
         #include <stdlib.h>

         static errno_t  err;

         void
         handler(const char *msg, void *ptr, errno_t err)
         {
                 printf("%s and the function exited with error number: %d\n",
                     msg, err);
         }

         int
         main(int argc, char *argv[])
         {
                 FILE            *fptr;

                 set_constraint_handler_s(handler);
                 if ((err = tmpfile_s(&fptr)) == 0)
                         printf("tmpfile_s is ok\n");
                 else
                         printf("tmpfile_s is a failure  %d\n", err);
                 err = tmpfile_s(NULL);
         }


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Interface StabilityCommitted _ MT-LevelMT-Unsafe



       None of these functions can be safely used in a multi-threaded program.

SEE ALSO
       asctime_s(3C), bsearch_s(3C), ctime_s(3C), fopen_s(3C),  fprintf_s(3C),
       freopen_s(3C),     fscanf_s(3C),     fwscanf_s(3C),     fwprintf_s(3C),
       getenv_s(3C),      gets_s(3C),      gmtime_s(3C),      localtime_s(3C),
       mbsrtowcs_s(3C),     mbstowcs_s(3C),    memcpy_s(3C),    memmove_s(3C),
       memset_s(3C), printf_s(3C), qsort_s(3C),  scanf_s(3C),  snprintf_s(3C),
       snwprintf_s(3C),     sprintf_s(3C),     sscanf_s(3C),     strcat_s(3C),
       strcpy_s(3C),   strerror_s(3C),   strerrorlen_s(3C),    strncat_s(3C)),
       strncpy_s(3C),     strnlen_s(3C),     strtok_s(3C),     swprintf_s(3C),
       swscanf_s(3C),     tmpfile_s(3C),     tmpnam_s(3C),     vfprintf_s(3C),
       vfscanf_s(3C),    vfwprintf_s(3C),    vfwscanf_s(3C),    vprintf_s(3C),
       vscanf_s(3C),   vsnprintf_s(3C),    vsnwprintf_s(3C),    vsscanf_s(3C),
       vswprintf_s(3C),    vswscanf_s(3C),    vwscanf_s(3C),   vwprintf_s(3C),
       wcrtomb_s(3C),     wcscat_s(3C),      wcscpy_s(3C),      wcsncat_s(3C),
       wcsncpy_s(3C),     wcsnlen_s(3C),     wcsrtombs_s(3C),    wcstok_s(3C),
       wcstombs_s(3C),    wctomb_s(3C),     wmemcpy_s(3C),     wmemmove_s(3C),
       wprintf_s(3C), wscanf_s(3C), libc(3LIB), standards(7)

HISTORY
       These functions, along with the rest of the interfaces specified by An‐
       nex  K  of the C11 standard, were added to Oracle Solaris in the Oracle
       Solaris 11.4.0 release.

Oracle Solaris 11.4               30 Jul 2021          runtime_..._handler(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3