Die zuverlässigste Methode scheint zu sein:
(setsid emacs &)
Dies wird verwendet, ( &)
um sich in den Hintergrund setsid
zu verzweigen und sich von der Steuerung zu lösen.
Sie können dies in eine Shell-Funktion einfügen:
fork() { (setsid "$@" &); } fork emacs
Die Möglichkeiten sind:
Der
disown
eingebaute Befehl:emacs & disown $!
&
fungiert als Kommando-Trennzeichen und verwendetdisown
standardmäßig den letzten Auftrag. Dies kann daher folgendermaßen verkürzt werden:emacs & disown
Doppel-
fork()
:(emacs &)
Befehle in Klammern
(
)
werden in einem separaten Shell-Prozess ausgeführt.setsid
Wie von Rich vorgeschlagen, ist dies möglicherweise die beste Wahl, da durch das Erstellen einer neuen Sitzung der steuernde TTY des Prozesses aufgehoben wird :setsid emacs
Es ist jedoch auch ein wenig unvorhersehbar - es wird nur
fork()
Hintergrund sein, wenn es der Anführer einer Prozessgruppe ist (was nicht der Fallsetsid
ist, wenn es beispielsweise in einemsh
Skript verwendet wird; in solchen Fällen wird es lediglich resistent gegen Strg- C.)