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.

atexit.html 4.2KB

3 jaren geleden
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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>