Como visto anteriormente , vfork
não permitir que o processo filho acesse a memória do pai. exit
é uma função da biblioteca C (é por isso que é muito escrito como exit(3)
). Ele executa várias tarefas de limpeza, como liberação e fechamento de fluxos C (os arquivos abertos por meio de funções declaradas em stdio.h
) e a execução de funções especificadas pelo usuário registradas com atexit
. Todas essas tarefas envolvem leitura e gravação na memória do processo.
_exit
sai sem limpeza. É diretamente uma chamada de sistema (é por isso que é escrita como _exit(2)
), normalmente implementada colocando o número de chamada do sistema em um registrador de processador e executando uma instrução de processador específica (ramificando-se para o manipulador de chamada do sistema). Isso não precisa acessar a memória do processo, portanto, é seguro fazer isso depois de vfork
.
Após fork
, não existe tal restrição: o processo pai e filho agora são completamente autônomos.