В C отсутствует связь между «основным процессом заканчивается», чтобы «вызовать любые функции, зарегистрированные в Atexit».

StackOverflow https://stackoverflow.com/questions/1799306

  •  22-09-2019
  •  | 
  •  

Вопрос

В C, когда заканчивается основной процесс - как он знает, чтобы вызвать какие -либо функции, зарегистрированные в atexit()?

Я понимаю, как atexit() Работает, но я не понимаю общения между «окончанием основного процесса» и «вызовом любых функций, зарегистрированных в atexit()"Я немного избыточно.

Спасибо!

Это было полезно?

Решение

Из Стандарт C. PDF ссылка] (5.1.2.2.3):

Возврат от первоначального вызова к main функция эквивалентна вызова exit функционировать со значением, возвращаемым main функционировать как его аргумент; достигая } что завершает основную функцию возвращает значение 0.

Это обязанность exit функция для вызова функций, зарегистрированных в atexit (См. 7.20.4.3 в стандарте для описания всего, что exit делает).

Другие советы

В c, main() Функция на самом деле вызывается какой -то другой функцией, которая встроена во время выполнения. Эта функция, после main() Функция заканчивается, делает еще несколько вещей, чтобы очистить. Одним из них является вызвать любые функции, которые были зарегистрированы в atexit(). Анкет Эта функция фактически хранит какой -то статический список указателей функций, который будет вызван во время выполнения после main().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top