Odpowiedzi:
Nie wspominasz, czy działa jako aplikacja X czy konsola.
Jeśli jest to aplikacja konsolowa, oczywiście musi zostać zamknięta. Pozbyłeś się jego wejścia / wyjścia, a bardziej technicznie (pseudo) tty, na którym był włączony. Bardzo mało prawdopodobne jest to, co miałeś na myśli, więc załóżmy, że mówisz o aplikacji X.
nohuppowinien działać, nie jestem pewien, dlaczego tak nie jest. Gdy powłoka zostanie zamknięta, wysyła ją SIGHUPdo wszystkich procesów w swojej grupie procesów. nohup nakazuje zignorować SIGHUP.
Możesz także wypróbować setsid, który odłączy proces od grupy procesów
alias emacs='setsid emacs'
Lub dodaj disownpo&
Najbardziej niezawodną metodą wydaje się być:
(setsid emacs &)
Służy to ( &)do przechodzenia do tła i setsidodłączania się od kontrolującego tty.
Możesz umieścić to w funkcji powłoki:
fork() { (setsid "$@" &); }
fork emacs
Możliwości są następujące:
disownWbudowanego polecenia:
emacs &
disown $!
&działa jako separator poleceń i disowndomyślnie przyjmuje ostatnie zadanie, więc można je skrócić do:
emacs & disown
Double- fork():
(emacs &)
Polecenia w nawiasach ( )są uruchamiane w osobnym procesie powłoki.
setsid, zgodnie z sugestią Richa, może być najlepszym wyborem, ponieważ resetuje kontrolującą TTY procesu, tworząc nową sesję :
setsid emacs
Jest to jednak trochę nieprzewidywalne - będzie działało tylko fork()w tle, jeśli będzie liderem grupy procesów (co nie stanie się, jeśli setsidzostanie użyte shna przykład w skrypcie; w takich przypadkach będzie jedynie odporne na Ctrl- DO.)
(exec emacs)działałoby?
(emacs). Jeśli podpowłoka otrzyma jedno polecenie, execimplikowane jest to, przynajmniej w przypadku bash. To samo dotyczy bash -c 'foo'versus bash -c 'exec foo'. (Jednakże należy zauważyć, że Emacs sama może być oderwanie od terminala,.. Gvim, na przykład, czy to jest lepiej testu z programu z znany zachowania)
Sprawdź ustawienia powłoki. Możesz także wypróbować screen zamiast nohup.
screen -rjeśli użyjesz go Ctrl-A Ctrl-Ddo odłączenia przed wylogowaniem.
screen -d -m sh -c "{do stuff } exit"ma to o wiele większy sens.