Eu uso browse-url
/ browse-url-firefox
para abrir links no Firefox a partir do Emacs 24.5.1 no Linux (Fedora 23) que, em essência, executa o firefox
executável com a URL por start-process
. Se já houver uma instância do Firefox em execução, isso fará com que o URL seja aberto em uma nova guia e encerre o firefox
executável gerado pelo Emacs, mas, caso contrário, uma nova instância do Firefox será executada como um processo filho do Emacs (para fins de teste , isso é equivalente a M-! sleep 1h & RET
).
Se eu quiser sair do Emacs, ele me perguntará "Existem processos ativos; mate-os e saia assim mesmo?" com a opção de matar a instância do Firefox ou deixar o Emacs em execução. Em vez disso, gostaria de "desanexar" o firefox
processo do pai do Emacs para que eu possa sair do Emacs enquanto mantém a instância do Firefox em execução.
É possível gerar processos do Emacs que "sobrevivem" ao sair do Emacs ou todos os processos gerados devem morrer quando o Emacs sai?
start-process
(como um visualizador de pdf) e o Emacs acha que seu trabalho terminou.Respostas:
aqui está a solução, encurtando a resposta da @ abo-abo.
Observe que a condição é necessária, porque o Mac não possui setsid.
fonte
Aqui está um comando que faz o que você deseja:
A principal coisa aqui é usar
nohup
.Veja a fonte aqui .
fonte
nohup
é uma boa solução. Infelizmente, acho a sua resposta muito "perturbadora" para alguém que apenas procura atingir o objetivo. Poderia, por favor, reduzir a fonte para algo como(shell-command "nohup sleep 1h &")
e adicionar uma nota explícita de que "desanexar" de um processo existente não é possível para que eu possa aceitar a resposta?