为什么有些应用程序从终端运行后不支持终端

为什么有些应用程序从终端运行后不支持终端

通常,当我从终端启动应用程序时,它会启动并保持终端,因此如果我按Ctrl+C,应用程序将退出,例如
[johndoe@localhost ~] gedit
但是,我注意到有些程序只是独立启动,尽管从终端运行,例如atomcode(Visual Studio Code)。这是为什么?它是如何工作的?

答案1

他们从后台开始。更准确地说,它们派生了另一个继续运行的进程,而 shell 启动的进程则终止。

如果您正在寻找有关如何完成此操作的详细信息,请查找“daemonize”。

编辑

正如 @JdeBP 指出的,守护进程不仅仅涉及分叉和退出。它通常涉及关闭所有文件或至少 0-2 个文件、另一个 fork、从 shell 进程组分离等等。您提到的程序可能会也可能不会这样做。

相关内容