É o processo que se limpa na terminação ou no kernel?

5

Recentemente, encontrei isso em uma apresentação em powerpoint:

When a program is compiled and linked, the linker inserts some extra code in the program. It is this code that calls the main function about the same way a user calls "lower functions".

The extra code has two functionalities:

  • make sure that the C program runs in the right environment
  • cleanup after succesfull termination

Antes disso, achei que a limpeza era o trabalho do kernel. Qual é a história certa?

    
por Pithikos 06.01.2012 / 15:29

1 resposta

9

O kernel e o tempo de execução C fazem parte do trabalho.

Algumas das coisas que o tempo de execução de C faz que o kernel não faz: ele executa manipuladores previamente registrados com atexit() e ele organiza para que o valor de retorno inteiro de main() seja retornado ao sistema como se fosse exit() .

É claro que, no final, o kernel colherá todos os recursos (arquivos, memória), independentemente do que o usuário faça ou não faça.

    
por 06.01.2012 / 15:39