Em C, o link ausente entre "o processo principal termina" para "chamar quaisquer funções registradas no Atexit"

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

  •  22-09-2019
  •  | 
  •  

Pergunta

Em C, quando o processo principal termina - como ele sabe chamar quaisquer funções registradas com atexit()?

Eu entendo como atexit() trabalha, mas não entendo a comunicação entre "o final do processo principal" e "Chame quaisquer funções registradas com atexit()"Estou sendo um pouco redundante.

Obrigado!

Foi útil?

Solução

A partir de o padrão C. Link pdf] (5.1.2.2.3):

um retorno da chamada inicial ao main A função é equivalente a chamar o exit função com o valor retornado pelo main função como seu argumento; chegando ao } que encerra a função principal retorna um valor de 0.

É de responsabilidade do exit função para chamar as funções registradas com atexit (Veja 7.20.4.3 no padrão para uma descrição de tudo o que exit faz).

Outras dicas

Em C, o main() A função é realmente chamada por outra função, que é incorporada no tempo de execução. Esta função, depois do main() A função termina, faz mais algumas coisas para limpar. Um deles é chamar quaisquer funções que foram registradas com o atexit(). Essa função realmente armazena algum tipo de lista estática de ponteiros de função, que serão chamados pelo tempo de execução depois main().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top