gpt4 book ai didi

unix - Unix中 session 和进程组的用途和意义?

转载 作者:行者123 更新时间:2023-12-03 05:22:01 25 4
gpt4 key购买 nike

Unix 进程有一个 session ID,并且是进程组的一部分 - 可以使用 setsid() 等函数更改/查询>/getpgrp().

然而,进程组 session 的概念总是让我困惑,任何人都可以解释一下拥有不同 session 和进程组的重要性 - 为什么/何时需要创建一个新 session 或将多个进程放入同一 session 和/或进程组中?

最佳答案

进程组是相关进程的集合,所有进程都可以同时发出信号。

session 是进程组的集合,它们要么附加到单个终端设备(称为控制终端),要么不附加到任何终端。

session 用于作业控制: session 中的进程组之一是前台进程组,可以通过终端控制字符发送信号。您可以将与控制终端的 session 视为对应于该终端上的“登录”。 (守护进程通常通过创建一个没有控制终端的新 session 来使自己与任何控制终端解除关联。)

例如如果您从 shell 运行 some_app,shell 会为其创建一个新的进程组,并使其成为 session 的前台进程组。 (some_app 可能会创建一些子进程;默认情况下,它们将属于同一进程组。)如果您随后按 ^Zsome_app的进程组收到停止它的信号; shell的进程组再次切换为前台进程组。然后,例如bg %1将再次启动some_app的进程组,但保持其在后台运行。

<小时/>

POSIX.1-2008 standard相当可读(至少,我认为是这样!) - 看看definitions以及 "General Terminal Interface" 的相关部分章。

关于unix - Unix中 session 和进程组的用途和意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6548823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com