通常,当我从终端启动应用程序时,它会启动并保持终端,因此如果我按Ctrl+C
,应用程序将退出,例如
[johndoe@localhost ~] gedit
但是,我注意到有些程序只是独立启动,尽管从终端运行,例如atom
和code
(Visual Studio Code)。这是为什么?它是如何工作的?
答案1
他们从后台开始。更准确地说,它们派生了另一个继续运行的进程,而 shell 启动的进程则终止。
如果您正在寻找有关如何完成此操作的详细信息,请查找“daemonize”。
编辑
正如 @JdeBP 指出的,守护进程不仅仅涉及分叉和退出。它通常涉及关闭所有文件或至少 0-2 个文件、另一个 fork、从 shell 进程组分离等等。您提到的程序可能会也可能不会这样做。