我以前搜索过这个问题,但一直找不到答案。
在 Windows 中,如果我打开控制台窗口,键入winmine
,然后按 Enter 键,Minesweeper 就会出现,与 cmd 程序完全分开。Minesweeper 实例与命令提示符没有任何关系,除非 Minesweeper 的父级设置为命令提示符的实例。然而,在 Linux 中情况有所不同。
在 Linux 中,如果我打开控制台窗口,键入emacs
并按 Enter,Emacs 就会打开,但它似乎与命令行绑定在一起。具体来说,似乎在关闭 Emacs 实例之前,我无法再使用命令行。有没有办法在 Linux 中复制 Windows 的行为?
谢谢!
答案1
在 中bash
,detach
是内置的,使用方式如下:
emacs &
detach %+ # or % + the number in brackets printed after the above
在中zsh
,您可以通过一个操作来后台运行并分离:
emacs &|
答案2
附加&
到命令行:
emacs &
这会使 emacs 处于后台并使您能够继续使用您的终端。
请注意,这仍会使 emacs 作为终端的子进程,并且当您退出终端时,它也会退出 emacs。为避免这种情况,请输入:
(emacs &)
括号告诉终端将 emacs 进程与终端分离。
尽管如此,程序的 stdout 和 stderr 消息仍会显示在终端上。为防止这种情况,请使用:
(emacs &> /dev/null &)
答案3
使用nohup
。像这样:nohup amarok &
希望这可以帮助。
答案4
util-linux 包含一个名为 setsid 的工具,它基本上完成 detach 的功能:
$ setsid someprogram
这将someprogram
在新会话中运行。