Já que estamos discutindo o Linux especificamente (pelo menos, eu entendo que é o que você quer desde que você usou o linux ), o fork
e As páginas de manual execve
são as referências apropriadas; eles listam todos os atributos que não são preservados. A maior parte desse comportamento é especificada pelo POSIX, mas existem algumas especificidades do Linux.
As páginas de manual não listam atributos que são preservados, concentrando-se naqueles que não são:
All process attributes are preserved during an
execve()
, except the following:
etc.
Não tentarei responder à sua pergunta listando todos os atributos que são preservados. No entanto, mostrarei uma propriedade-chave que é preservada e que você não listou: os sinais padrão ignorados e preservados são preservados em execve
. Isso significa que um pai pode ignorar um sinal (pelo menos, sinais que podem ser ignorados) e esse comportamento será propagado para qualquer filho. Isso é o que permite que nohup
funcione.
Você pode encontrar uma lista completa dos atributos do processo, com uma explicação do que acontece com eles em exec()
ou fork()
, na seção 28.4 de A Interface de Programação Linux .