Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

103 lines
4.2KB

  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>atexit (The Red Hat newlib C Library)</title>
  7. <meta name="description" content="atexit (The Red Hat newlib C Library)">
  8. <meta name="keywords" content="atexit (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="atof.html#atof" rel="next" title="atof">
  17. <link href="assert.html#assert" rel="prev" title="assert">
  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="atexit"></a>
  48. <div class="header">
  49. <p>
  50. Next: <a href="atof.html#atof" accesskey="n" rel="next">atof</a>, Previous: <a href="assert.html#assert" accesskey="p" rel="prev">assert</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="atexit_002d_002d_002drequest-execution-of-functions-at-program-exit"></a>
  54. <h3 class="section">2.6 <code>atexit</code>&mdash;request execution of functions at program exit</h3>
  55. <a name="index-atexit"></a>
  56. <p><strong>Synopsis</strong>
  57. </p><div class="example">
  58. <pre class="example">#include &lt;stdlib.h&gt;
  59. int atexit (void (*<var>function</var>)(void));
  60. </pre></div>
  61. <p><strong>Description</strong><br>
  62. You can use <code>atexit</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 must not require arguments and
  65. must not return a result).
  66. </p>
  67. <p>The functions are kept in a LIFO stack; that is, the last function
  68. enrolled by <code>atexit</code> will be the first to execute when your program
  69. exits.
  70. </p>
  71. <p>There is no built-in limit to the number of functions you can enroll
  72. in this list; however, after every group of 32 functions is enrolled,
  73. <code>atexit</code> will call <code>malloc</code> to get space for the next part of the
  74. list. The initial list of 32 functions is statically allocated, so
  75. you can always count on at least that many slots available.
  76. </p>
  77. <br>
  78. <p><strong>Returns</strong><br>
  79. <code>atexit</code> returns <code>0</code> if it succeeds in enrolling your function,
  80. <code>-1</code> if it fails (possible only if no space was available for
  81. <code>malloc</code> to extend the list of functions).
  82. </p>
  83. <br>
  84. <p><strong>Portability</strong><br>
  85. <code>atexit</code> is required by the ANSI standard, which also specifies that
  86. implementations must support enrolling at least 32 functions.
  87. </p>
  88. <p>Supporting OS subroutines required: <code>close</code>, <code>fstat</code>, <code>isatty</code>,
  89. <code>lseek</code>, <code>read</code>, <code>sbrk</code>, <code>write</code>.
  90. </p>
  91. <br>
  92. </body>
  93. </html>