Unix中会话和进程组的用途和意义?

2023-12-24

Unix 进程有一个会话ID并且是一部分进程组- 可以使用以下功能更改/查询setsid()/getpgrp().

然而,一个概念进程组 and session总是让我困惑,有人能解释一下不同的会话和进程组提供什么意义吗?为什么/何时要创建一个新会话或将多个进程放在同一会话和/或进程组中?


A 进程组是可以同时发出信号的相关进程的集合。

A session是进程组的集合,这些进程组要么附加到单个终端设备(称为控制终端)或未连接到任何终端。

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

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


The POSIX.1-2008标准 http://pubs.opengroup.org/onlinepubs/9699919799/是相当可读的(至少,我认为是这样!) - 看看定义 http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html以及相关章节《通用终端接口》 http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap11.html#tag_11章节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unix中会话和进程组的用途和意义? 的相关文章

  • 相当于 UNIX diff 和 patch 的本机 PowerShell

    我需要潜在地修补文件作为脚本的一部分 为了使脚本所做的事情更具可读性 我想以类似于 UNIX diff 和 patch 方法的方式来实现它 在标准 UNIX 系统上 diff 可以生成特殊格式的文本文件 表示两个文件之间的差异 这可以与要修
  • BASH 中带有千位分隔符的数字格式

    我有一个号码12343423455 23353 我想用千位分隔符格式化数字 所以输出将是12 343 423 455 23353 printf 3f n 12345678 901 12 345 678 901
  • 进程如何知道它已收到信号

    如果我错了 请纠正我 以下是我对信号的理解 据我所知 信号生成 和信号传递有2个不同 事物 为了产生信号 操作系统只是在位数组中设置一个位 在过程控制中维护 工艺块 PCB 每一位 对应于特定信号 当设置一个位时 这意味着 该位对应的信号为
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否可以在unix cut 命令中使用字符串作为分隔符?

    如果我想使用字符串作为分隔符来剪切文本列表 这可能吗 例如 我有一个目录 其中一系列 shell 脚本调用相同的 perl 脚本 abc pl 所以当我这样做时 grep abc pl 在该目录中 它给了我以下结果 xyz sh abc p
  • 在命令行java中突出显示文本[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一项任务是重新创建 unix cal 程序 除了一部分之外 相当简单 今天 它突出显示了该数字 我不知道该怎么做 关于如何在 Ja
  • 如何在 Linux 中显示进程状态(阻塞、非阻塞)

    有没有办法查询 Linux 进程表中进程的状态 以便能够演示执行查询时进程是正在运行还是被阻止 我的目标是从进程或程序的 外部 执行此操作 因为我希望从操作系统进程的角度来理解这一点 但欢迎任何想法 这是Python代码阻塞的过程 impo
  • Runtime.getRuntime().exec(cmd) 挂起

    我正在执行一个命令 该命令返回文件的修订号 文件名 但如果执行命令时出现问题 应用程序就会挂起 我可以做什么来避免这种情况 请在下面找到我的代码 String cmd cmd C si viewhistory fields revision
  • import java 导入错误:没有名为 java 的模块

    我似乎遇到了障碍 根本无法解决这个问题 任何人都可以帮我弄清楚为什么我无法导入 java 模块吗 Error Traceback most recent call last File datasource config py line 3
  • 如何使用 bash 粘贴来自单独文件的列?

    我想用分隔符 合并不同的列表 第一个列表有 2 个单词 cat first one who 第二个列表有 10000 个单词 cat second languages more simple advanced home expert tes
  • 使用 unix ksh shell 脚本或 perl 脚本监视文件夹中的新文件并触发 perl 脚本

    我已经在谷歌搜索和溢出了一段时间 但找不到任何可用的东西 我需要一个脚本来监视公共文件夹并在创建新文件时触发 然后将文件移动到私有位置 我有一个 samba 共享文件夹 exam ple 在 UNIX 上映射到X 在窗户上 在某些操作中 t
  • 使用 awk 处理多个文件

    我必须使用 awk 处理大量 txt 文件 每个文件 1600 万行 我必须阅读例如十个文件 File 1 en sample 1 200 en n sample 2 10 en sample 3 10 File 2 en sample 1
  • 为什么我的信号处理程序只执行一次?

    我正在 UNIX 和 C 中处理信号 并遇到了这个问题 我正在尝试编写一个计数到 10 的程序 每秒一个数字 当用户尝试使用 SIGINT 如 CTRL C 中断它时 它会打印一条消息 告诉它无论如何都会继续计数 到目前为止 我得到了这个
  • 如何在 Linux/Unix 上根据文件类型添加文件扩展名?

    这是一个关于 Unix shell 脚本 任何 shell 的问题 但任何其他 标准 脚本语言解决方案也将受到赞赏 我有一个充满文件的目录 其中文件名是这样的哈希值 fd73d0cf8ee68073dce270cf7e770b97 fec8
  • 在 unix bash 脚本中可以嵌套 Here Document 吗?

    是否可以在另一个heredoc中编写一个heredoc ssh T q yxz server1 lt lt END TEXT ssh T q abc server2 lt lt SUB TEXT SUB TEXT END TEXT Yes
  • 如何使用 netcat 发送文件并保持连接?

    我发出命令 netcat serveraddress myport lt MY FILE 问题是 一旦文件发送完毕 netcat 就会发送一条消息来关闭连接 发送该文件后 我需要从控制台写入消息 我记得对标准输入做了一些事情 是这样的吗 n
  • Nodejs 进程挂起,我该如何调试它或收集转储?

    我的nodejs进程在Linux上运行 现在挂起并且CPU为100 无论如何我可以调试它并找到原因吗 我需要收集转储吗 如何收集 谢谢 有一个 npm 模块叫做节点为何运行 https www npmjs com package why i
  • 如何同时正确使用管道和信号?

    我有 2 个孩子 我想将信号从孩子发送到父母 并将答案 随机数 为什么 为什么不 命名管道从父母发送到每个孩子 我有这个代码 include
  • 在Java中执行.lnk文件

    我需要在java中执行 lnk文件 指向exe文件的lnk文件 我能怎么做 在 VB net 中我做 Process Start path 它有效 谢谢你的帮助 Use a 流程构建器 http download oracle com ja
  • 从 java 与 C++ 程序通信

    我想从 java 中执行外部 exe 程序 exe 是一个 CLI 应用程序 它在运行时 scanf 中获取输入并根据输入进行输出 我可以使用 java 调用要执行的程序 Process p Runtime getRuntime exec

随机推荐

  • 操作系统级别的睡眠是如何实现的?

    我只是感兴趣如何sleep time in ms 是在 C 库中实现的 或者基本上是在操作系统级别实现的 我猜 可能是基于处理器速度 你做了一个 nop 的 while 循环 我不确定睡眠时间是否准确 处理器中的任何特殊寄存器 您在其中写入
  • ASIHTTPRequest 中 POST 中的正文为空

    基本上 我发送一个带有空数据正文的 POST 请求 ASIHTTPRequest request ASIHTTPRequest alloc init request setURL NSURL URLWithString escapedUrl
  • Docker 未知速记标志:-aq 中的“a”)

    我有多个正在运行的 docker 版本 18 09 0 构建 4d60db4 容器 我希望立即停止它们 这篇博文 http blog baudson de blog stop and remove all docker containers
  • 将文件名设置为 Blob 文件

    我想向我的 Blob 文件添加一个文件名 但我真的不知道该怎么做 这是我目前的代码 onClick var myHeader new Headers myHeader append Content Type text plain fetch
  • 如何加密 web.config 中的一项

    ASP NET 4 我用过RSA密钥加密 http msdn microsoft com en us library ff650304 aspx paght000006 webfarmscenarios用于我的网络场的 web config
  • ThreadLocal - 用作带有 spring-boot 的 REST API 的上下文信息

    我有一些spring boot应用程序 它公开了 REST API 提到的 REST API 是由spring security 一切都很好 但是现在我需要设置上下文 用于服务请求 设置上下文是指根据用户上下文选择数据源 关键是Routin
  • Unity Shader - 如何有效地重新着色特定坐标?

    首先 请允许我解释一下我所得到的内容 然后我将讨论接下来我想要弄清楚的内容 我有什么 我有一个带纹理的自定义网格 其一些边缘与 Unity 中的整数世界坐标完全对齐 在网格中 我添加了自己的粗略但有效的自定义表面着色器 如下所示 Shade
  • Swift Closure 中的可选链接,返回类型必须为 Void

    我正在创建一个脚本的双向链接列表 MSScripts 应该有自己的run 实现 然后他们调用下一个脚本 rscript 当他们准备好时 我想创建的脚本之一只是一个延迟 它看起来像这样 class DelayScript MSScript v
  • Django - ManyToManyRelation 中的级联删除

    使用以下相关模型 一篇博客文章可以有多个修订版 class BlogEntryRevision models Model revisionNumber models IntegerField title models CharField m
  • lua 中的准引用/引用?

    在 Lisp 中 我可以 a b c d e f g 意思是 look up b c d e f g look up a apply value of a to above 那么 我还可以 a b c d e f g 这相当于 list a
  • $_ 与命名输入或循环参数有何不同?

    由于我经常使用 我想更好地理解它的用法 据我理解和使用 是隐式值的全局变量 由于 似乎无论如何都已设置 是否有理由在 上使用命名循环变量besides可读性 在什么情况下 是全局变量很重要 所以如果我使用 for array print o
  • 后记 - 文档大小

    附言中如何设置页面大小 如何将文档旋转到宽度 Example 1 newpath 100 200 moveto 200 250 lineto 100 300 lineto 2 setlinewidth stroke showpage 谢谢
  • 如何在 Jenkins 中将安全类型从 SSL 更改为 TLS?

    我正在尝试设置 smtp 电子邮件通知 我可以看到 Gmail 部分工作正常 我想为我的 Office 365 配置它 smtp服务器 smtp office365 com 我们没有配置 SSL 相反 我们使用 TLS 如何在 Jenkin
  • 如何通过删除 NA 值的选项来融合 Pandas 中的数据框

    我有一个像这样的 Pandas 数据框 df pd DataFrame VAR1 V1 V2 V2 V3 V4 V4 V5 VAR2 C1 C1 C1 C2 C2 C2 C3 VAR3 S1 S2 S3 S4 VAR4 S3 S4 S5 S
  • 更改应用程序默认描述语言

    我正在将我的应用程序的新版本提交到应用程序商店 有没有办法更改 iTunesConnect 中的默认应用程序语言 假设我有法语作为默认描述语言 我需要更改default到英语 我怎么做 您的应用程序必须处于 准备销售 状态 然后 转到您的应
  • 是否可以根据变量标签选择列?

    对于非常广泛的数据集 是否可以使用变量标签来选择列 library expss data mtcars mtcars apply labels mtcars mpg Miles US gallon cyl Number of cylinde
  • 在Python中使用Windows换行符在Linux上高效读取csv文件

    下面是在windows下逐行读取csv文件的工作 f open filename r for line in f 但是当将 csv 文件复制到 Linux 服务器时 它失败了 应该提到的是 由于 csv 文件很大 性能是一个问题 因此 我担
  • C++ 嵌套迭代器

    可以使用像下面这样的嵌套迭代器吗 for vector
  • Google Play alpha/beta 测试的最大测试人员数量

    我的应用程序还没有发布 我可以通过 Google Play 测试我的应用程序的 Alpha Beta 测试人员的最大数量是多少 对于 iOS 每个构建有 1000 名外部测试人员 Google Play 的限制是多少 没有有效限制 尽管有G
  • Unix中会话和进程组的用途和意义?

    Unix 进程有一个会话ID并且是一部分进程组 可以使用以下功能更改 查询setsid getpgrp 然而 一个概念进程组 and session总是让我困惑 有人能解释一下不同的会话和进程组提供什么意义吗 为什么 何时要创建一个新会话或