Antes de tudo, toda vez que você executa um comando, o shell faz um novo processo, independentemente de você executá-lo &ou não. &significa apenas que você está executando em segundo plano.
Observe que isso não é muito preciso. Alguns comandos, como cdsão funções de shell e geralmente não bifurcam um novo processo. type cmdnormalmente diz se cmdé um comando externo ou uma função shell. type typediz que em typesi é uma função shell.
nohupé algo diferente. Diz ao novo processo para ignorar SIGHUP. É o sinal enviado pelo kernel quando o shell principal é fechado.
Para responder sua pergunta, faça o seguinte:
- executar
emacs & (por padrão, deve ser executado em uma janela X separada) .
- no shell pai, execute
exit.
Você notará que a emacsjanela está morta, apesar de ser executada em segundo plano. Esse é o comportamento padrão e nohupé usado com precisão para modificá-lo.
Executar um trabalho em segundo plano (com &ou bg, aposto que outros shells também têm outras sintaxes) é um recurso de shell, decorrente da capacidade dos sistemas modernos de realizar multitarefas. Em vez de bifurcação uma nova instância de shell para cada programa que você deseja iniciar, conchas modernas ( bash, zsh, ksh, ...) terá a capacidade de gerenciar uma lista de programas (ou empregos ). Apenas um deles por vez pode estar em primeiro plano , o que significa que ele obtém o foco do shell. Eu gostaria que alguém pudesse expandir mais as diferenças entre um processo em execução em primeiro plano e outro em segundo plano (o principal é o acesso a stdin/ stdout).
De qualquer forma, isso não afeta a maneira como o processo filho reage SIGHUP. nohupfaz.
nohupfaz. Que parte você confundiu?