You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
4.4KB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>on_exit (The Red Hat newlib C Library)</title>
  7. <meta name="description" content="on_exit (The Red Hat newlib C Library)">
  8. <meta name="keywords" content="on_exit (The Red Hat newlib C Library)">
  9. <meta name="resource-type" content="document">
  10. <meta name="distribution" content="global">
  11. <meta name="Generator" content="makeinfo">
  12. <link href="index.html#Top" rel="start" title="Top">
  13. <link href="Document-Index.html#Document-Index" rel="index" title="Document Index">
  14. <link href="Document-Index.html#SEC_Contents" rel="contents" title="Table of Contents">
  15. <link href="Stdlib.html#Stdlib" rel="up" title="Stdlib">
  16. <link href="qsort.html#qsort" rel="next" title="qsort">
  17. <link href="mbtowc.html#mbtowc" rel="prev" title="mbtowc">
  18. <style type="text/css">
  19. <!--
  20. a.summary-letter {text-decoration: none}
  21. blockquote.indentedblock {margin-right: 0em}
  22. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  23. blockquote.smallquotation {font-size: smaller}
  24. div.display {margin-left: 3.2em}
  25. div.example {margin-left: 3.2em}
  26. div.lisp {margin-left: 3.2em}
  27. div.smalldisplay {margin-left: 3.2em}
  28. div.smallexample {margin-left: 3.2em}
  29. div.smalllisp {margin-left: 3.2em}
  30. kbd {font-style: oblique}
  31. pre.display {font-family: inherit}
  32. pre.format {font-family: inherit}
  33. pre.menu-comment {font-family: serif}
  34. pre.menu-preformatted {font-family: serif}
  35. pre.smalldisplay {font-family: inherit; font-size: smaller}
  36. pre.smallexample {font-size: smaller}
  37. pre.smallformat {font-family: inherit; font-size: smaller}
  38. pre.smalllisp {font-size: smaller}
  39. span.nolinebreak {white-space: nowrap}
  40. span.roman {font-family: initial; font-weight: normal}
  41. span.sansserif {font-family: sans-serif; font-weight: normal}
  42. ul.no-bullet {list-style: none}
  43. -->
  44. </style>
  45. </head>
  46. <body lang="en">
  47. <a name="on_005fexit"></a>
  48. <div class="header">
  49. <p>
  50. Next: <a href="qsort.html#qsort" accesskey="n" rel="next">qsort</a>, Previous: <a href="mbtowc.html#mbtowc" accesskey="p" rel="prev">mbtowc</a>, Up: <a href="Stdlib.html#Stdlib" accesskey="u" rel="up">Stdlib</a> &nbsp; [<a href="Document-Index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Document-Index.html#Document-Index" title="Index" rel="index">Index</a>]</p>
  51. </div>
  52. <hr>
  53. <a name="on_005fexit_002d_002d_002drequest-execution-of-function-with-argument-at-program-exit"></a>
  54. <h3 class="section">2.31 <code>on_exit</code>&mdash;request execution of function with argument at program exit</h3>
  55. <a name="index-on_005fexit"></a>
  56. <p><strong>Synopsis</strong>
  57. </p><div class="example">
  58. <pre class="example">#include &lt;stdlib.h&gt;
  59. int on_exit (void (*<var>function</var>)(int, void *), void *<var>arg</var>);
  60. </pre></div>
  61. <p><strong>Description</strong><br>
  62. You can use <code>on_exit</code> to enroll functions in a list of functions that
  63. will be called when your program terminates normally. The argument is
  64. a pointer to a user-defined function which takes two arguments. The
  65. first is the status code passed to exit and the second argument is of type
  66. pointer to void. The function must not return a result. The value
  67. of <var>arg</var> is registered and passed as the argument to <var>function</var>.
  68. </p>
  69. <p>The functions are kept in a LIFO stack; that is, the last function
  70. enrolled by <code>atexit</code> or <code>on_exit</code> will be the first to execute when
  71. your program exits. You can intermix functions using <code>atexit</code> and
  72. <code>on_exit</code>.
  73. </p>
  74. <p>There is no built-in limit to the number of functions you can enroll
  75. in this list; however, after every group of 32 functions is enrolled,
  76. <code>atexit</code>/<code>on_exit</code> will call <code>malloc</code> to get space for the next part
  77. of the list. The initial list of 32 functions is statically allocated, so
  78. you can always count on at least that many slots available.
  79. </p>
  80. <br>
  81. <p><strong>Returns</strong><br>
  82. <code>on_exit</code> returns <code>0</code> if it succeeds in enrolling your function,
  83. <code>-1</code> if it fails (possible only if no space was available for
  84. <code>malloc</code> to extend the list of functions).
  85. </p>
  86. <br>
  87. <p><strong>Portability</strong><br>
  88. <code>on_exit</code> is a non-standard glibc extension
  89. </p>
  90. <p>Supporting OS subroutines required: None
  91. </p>
  92. <br>
  93. </body>
  94. </html>