根据我的理解,与控制终端的会话具有“前台进程组”和“后台进程组”。
但是如果我们有一个没有控制终端的会话,这样的会话是否仍然有“前台进程组”和“后台进程组”?
答案1
“前台”进程组一般是为终端定义的。没有终端,何来前台或后台?
例如,进程组上的 POSIX:
终端可能有一个与之关联的前台进程组。......
如果一个进程位于其控制终端的前台进程组中...
...前台进程组中的所有进程,其终端是控制终端...
前台进程组的一切都在终端的上下文中。
答案2
进程组总是由一个主进程(例如 SSH 会话)管理。一旦主进程关闭,所有子进程(包括前台和后台任务)也会被终止。
有一些方法可以将进程从启动位置分离出来,例如使用nohup
。然后此进程将处于独立状态,如果您需要将此类进程重新带回前台,则需要使用某些工具,例如reptyr
。